D
duanyq7
Unregistered / Unconfirmed
GUEST, unregistred user!
[2009-04-01]DLL是一个全局钩子,挂接到指定进程监听键盘,一旦指定进程按下某键,则自动执行一些操作。即sendmessage是由dll中的回调函数来调用,而非外部程序调用。DLL中的回调函数如下:function KeyHookProc(iCode: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall; export;begin if iCode < 0 then Result := CallNextHookEx(hOldKeyHook, iCode, wParam, lParam) else begin if wParam = XXX then //指定键按下 begin //1.对按钮发送消息: SendMessage(hdButton, WM_LBUTTONDOWN, 0, 0); SendMessage(hdButton, WM_LBUTTONUP, 0, 0); //2.对输入框发送消息: SendMessage(hdEdit, WM_SETFOCUS, 0, 0); SendMessage(hdEdit, WM_SETTEXT, 0, Integer(PChar('580013'))); SendMessage(hdEdit, EM_SETSEL, 4, 4); end; end;end;即先触发一个按钮的点击,再对一个输入框发送文本。我测试如果只做其中一个操作,一切正常。但二者合在一起,第二项始终无法触发。类似的,如果连续对两个不同的按钮发送SendMessage,后面一项也无法触发。但单独操作则正常。试过sleep,PostMessage都不行。请高手帮忙,谢谢!!!