用来截获进程启动事件的Hook 不能执行,请高手指点(200分)

  • 主题发起人 主题发起人 zych72
  • 开始时间 开始时间
Z

zych72

Unregistered / Unconfirmed
GUEST, unregistred user!
回复人: zych72(闹闹) ( ) 信誉:100 2002-08-15 02:49:00 得分:0


我按书上的说明编写了一个钩子程序,用来截获进程启动事件
可是钩子处理函数却不执行,请告诉我错在哪里

unit setHook;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
// function theMouseHookProc(code: Integer; wparam: WPARAM; lparam: LPARAM): LRESULT; stdcall;

end;

var
Form1: TForm1;

implementation

{$R *.dfm}

var
aHook:HHOOK;

function theCBTHookProc(code: Integer; wparam: WPARAM; lparam: LPARAM): LRESULT; stdcall;
begin
result:=0;
IF (code=HCBT_CREATEWND )then
begin
beep;
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
aHook:=SetWindowsHookEx(

WH_CBT , // type of hook to install
theCBTHookProc, // address of hook procedure
0, // handle of application instance
0//DWORD dwThreadId
);

end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
UnhookWindowsHookEx(
ahook // handle of hook procedure to remove
);
end;

end.


Top

 
老王太忙啊,他刚做了这么一个咚咚[:D][:D]
 
你的程序我看不出什么问题。
我也测试过了,没有问题,程序本身运行时也有声明,
双击“我的电脑”以次打开各文件夹时也有声明,你可慢慢双击试试。
都有声音,可能关键在于理解 HCBT_CREATEWND 这个是什么,
应该在建立窗口时就勾住。就连一从“开始”菜单点击,也有声音。
你到底要实现什么效果?

另外,你把声明开得大一点,
再查查看在控制面板的“声音”中有没有设置“默认声明”。
用一按钮做一个“beep”,看能不能听到。
 
后退
顶部