|
问:如何在非PB窗口中实现键盘按键和鼠标点击动作的检测?如很多屏幕捕捉软件,都可以在非本软件窗口中实现热键响应事件。 答:首先调用api函数RegisterHotKey为窗口注册热键。当热键按下后,windows发送wm_hotkey消息给窗口,这时我们可以在PB窗口的other事件中处理。 定义窗口实例变量: long atomid constant integer MOD_ALT = 1 //ALT键 constant integer MOD_CONTROL = 2 //CTRL键 constant integer MOD_SHIFT = 4 //SHIFT键 定义API函数: FUNCTION Integer GlobalAddAtom(ref string lpString) LIBRARY "kernel32.dll" ALIAS FOR "GlobalAddAtomA" FUNCTION ulong RegisterHotKey(ulong hwnd,ulong id,ulong fsModifiers,ulong vk) LIBRARY "user32.dll" 在窗口的open事件编写脚本: //注册热键 long ll_RC string ls_atomid ls_atomid = 'myatomid' atomid = GlobalAddAtom(ls_atomid) //得到惟一的ID,保证不和其他应用程序发生冲突 ll_RC = RegisterHotKey(Handle(this), atomid, MOD_CONTROL , 70) //注册的热键为Ctrl+F ,70为'F' //如果组合键,可用MOD_CONTROL + MOD_ALT等 if ll_RC = 0 then messagebox("Error!","热键注册错误") //热键注册冲突 在窗口的other事件编写脚本: //处理系统热键 IF wparam = atomid THEN //处理 messagebox('hello','你好!') END IF
|