Текущий архив: 2004.06.13;
Скачать: CL | DM;
ВнизWH_SHELL Найти похожие ветки
← →
Orion2 © (2004-04-29 18:14) [0]Почему отказывается работать код? Точнее он работает, но единственное, что приходит окну - HSHELL_LANGUAGE.
Это код библиотеки:
library ShellWnds;
uses
Windows, Messages, SysUtils;
{$R *.RES}
const
WM_SHELL = WM_USER + 200;
var
ShellHook: THandle;
function ShellProc(Code, WParam, LParam: integer): Longint; stdcall;
function GetShellWnd: THandle;
begin
Result:=FindWindow(nil, "OrionShell");
end;
begin
case Code of
HSHELL_WINDOWCREATED,
HSHELL_WINDOWDESTROYED,
HSHELL_WINDOWACTIVATED,
HSHELL_LANGUAGE: SendMessage(GetShellWnd, WM_SHELL, Code, WParam);
end;
Result:=CallNextHookEx(ShellHook, Code, WParam, LParam);
end;
procedure InitHook;
begin
ShellHook:=SetWindowsHookEx(WH_SHELL, @ShellProc, GetModuleHandle("ShellWnds.dll"), 0);
end;
procedure DeinitHook;
begin
UnhookWindowsHookEx(ShellHook);
end;
exports
InitHook,
DeinitHook;
begin
end.
Это код формы:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
const
wm_shell = wm_user + 200;
type
TForm1 = class(TForm)
Memo1: TMemo;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure WMShell(var msg: tmessage); message wm_shell;
private
{ Private declarations }
public
hooklib: thandle;
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
var
inithook: procedure;
begin
HookLib := LoadLibrary( PChar( ExtractFilePath(paramstr(0)) + "ShellWnds.dll" ) );
@inithook := GetProcAddress( HookLib, "InitHook" );
if @inithook <> nil then
begin
memo1.lines.add("init... ok");
inithook;
end;
end;
procedure TForm1.FormDestroy(Sender: TObject);
var
deinithook: procedure;
begin
@deinithook := GetProcAddress( HookLib, "DeinitHook" );
if @deinithook <> nil then
begin
memo1.lines.add("deinit... ok");
deinithook;
end;
freelibrary(hooklib);
end;
procedure TForm1.WMShell(var msg: tmessage);
begin
memo1.lines.add(inttostr(msg.wparam)+" "+inttostr(msg.lparam));
msg.Result:=1;
end;
end.
← →
Orion2 © (2004-05-06 18:21) [1]up
Страницы: 1 вся ветка
Текущий архив: 2004.06.13;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.04 c