·天新网首页·加入收藏·设为首页
首页|笔记本|手机|数码相机|摄像机|MP3/MP4|主板|内存|显示器|办公|打印机|下载|开发|汽车|学院|业界
硬件|台式机|数码|数字家庭|投影仪|GPS/CPU|显卡|硬盘|服务器|网络|一体机|驱动|源码|游戏|考试|报价
在非PB窗口中实现键盘按键和鼠标点击动作的检测
http://dev.21tx.com 2005年03月13日

问:如何在非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

上一篇: PB和EAServer共筑多层应用架构
下一篇: Powerbuilder中怎样实现用代码配置ODBC

Google
 
热点文章
关于我们 | 联系我们 | 广告服务 | 工作机会 | 版权声明 | 欢迎投稿 | 网站地图
Copyright © 2000-2008 , www.21tx.com , All Rights Reserved .
© 晨新科技 版权所有 Created by TXSite.net