我在一个应用程序中给一个edit加了一个键盘的钩子,为什么整个应用程序都起作用,起它应用中不起作用,我想只在这个edit起作用,另外为什么钩子函数总是执行两次!
程序如下:
function KeyHookProc(iCode: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall; export; // 钩子函数
var
str:pchar;
begin
if wParam=vk_return then
begin
GetWindowText(editHandle ,str ,500);
showmessage(str);
end;
result:= CallNextHookEx(g_hKey, iCode, wParam, lParam);
end;//设置钩子的语句
dwThreadID := GetWindowThreadProcessId(editHandle, nil);
g_hKey:= SetWindowsHookEx(WH_KEYBOARD,@KeyHookProc,Hinstance,dwThreadID);
程序如下:
function KeyHookProc(iCode: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall; export; // 钩子函数
var
str:pchar;
begin
if wParam=vk_return then
begin
GetWindowText(editHandle ,str ,500);
showmessage(str);
end;
result:= CallNextHookEx(g_hKey, iCode, wParam, lParam);
end;//设置钩子的语句
dwThreadID := GetWindowThreadProcessId(editHandle, nil);
g_hKey:= SetWindowsHookEx(WH_KEYBOARD,@KeyHookProc,Hinstance,dwThreadID);
如果不行,把钩子函数单独做到一个DLL中试一下!