Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.47 MB
Время: 0.048 c
1-1085918049
kalmykovser
2004-05-30 15:54
2004.06.13
Как заглушить нажатие клавиши Win (vk_rwin or vk_lwin)


14-1085575902
oldman
2004-05-26 16:51
2004.06.13
Что-то слабо верится...


3-1085404186
REA
2004-05-24 17:09
2004.06.13
ComboBox


3-1085328601
pashaz
2004-05-23 20:10
2004.06.13
Траблы с ADOQuery, помогите плиз


14-1085505774
Torin
2004-05-25 21:22
2004.06.13
Выделении части линии