瑞星卡卡安全论坛技术交流区系统软件 如何在VB中调用API拦截键盘呢??

1   1  /  1  页   跳转

如何在VB中调用API拦截键盘呢??

如何在VB中调用API拦截键盘呢??

注意,是调用API,比如说在程序非激活状态下按入一个指定的键,然后激活程序为当前活动的程序。
先谢谢各位了。
最后编辑2006-03-09 22:21:54
分享到:
gototop
 

郁闷哦,有没有哪位大虾帮我出出主意呀??
gototop
 

可以通过RegisterHotKey()为程序定义一个系统范围的热键。

该函数原形如下:

BOOL RegisterHotKey(HWND hWnd, // 接收热键响应的窗口句柄
int id, // 热键的标识
UINT fsModifiers, // 控制键标志
UINT vk // 虚拟键值
);

  其中,热键标识id必须是一个范围在0xC000到0xFFFF之间的全局唯一的值。


也可以参考:

VB中利用ccrpHotKey控件设置热键
http://tech.163.com/05/0610/10/1LSMR0J500091589.html
gototop
 

大虾,能不能举个例子呀,我不是很明白哦。
gototop
 

那个好像是不行的,要在程序为当前窗口时才可以
gototop
 

版主C++学的不错啊~~~~~
gototop
 

楼主可以参考:

编程使用系统热键{演示RegisterHotKey()和UnregisterHotKey()}
http://forum.ikaka.com/topic.asp?board=55&artid=7854478



按下某组键(HotKey)便执行某程式
http://www.vbzx.net/ArticleView/vbzx_Article_View_545.asp
gototop
 

在Form中加入
Private Declare Function GetAsyncKeyState Lib "user32" _
  (ByVal vkey As Long) As Integer

Private Function MyHotKey(vKeyCode) As Boolean
  MyHotKey = GetAsyncKeyState(vKeyCode) < 0
End Function

然后在循环中或Timer的Timer事件中检测:
  If myHotKey(vbkeyA) then .....



我觉得这个方法简单又好用,只要再加入一个API让热键按下后程序出现在最顶层就可以做一个呼出程序的热键了.
gototop
 

与RegisterHotKey()相比,GetAsyncKeyState()的优点在于可以监控鼠标按键,缺点是需要使用定时器,而且无法保证热键的惟一性。
gototop
 
1   1  /  1  页   跳转
页面顶部
Powered by Discuz!NT