winio模拟键盘

来源:百度知道 编辑:UC知道 时间:2024/06/09 02:40:46
一个改键的程序
我想用VC程序调用winio模拟键盘,我在winio的源程序dll工程中添加了
系统hook,并在hook中用SetPotVal函数模拟键盘消息
问题出来了,该程序是当前窗口时程序运行无误
一旦不是当前窗口就没有产生按键消息了(但是能HOOK),谁能告诉我这是为什么?
1楼说的是程序不是当前窗口就无法响应消息是吧,这一点我也知道
我的情况是,我运行了程序,然后打开事本,按那个应该拦截的键,该键确实被拦住了,说明HOOK发生了作用
但是我在HOOK过程函数中用WINIO模拟发出的按键消息为什么没有出现呢?按道理说它是要出现在记事本上的啊?
诚心请教各位大侠!

键盘消息由原始线程所拥有,由系统放入全局的基本输入输出队列中的.仅当应用程序处于当前窗口时,系统根据当前窗口句柄获得创建窗口的线程,把全局消息队列中的键盘消息放入该线程的虚拟输入输出对列中,从而对消息的捕获与处理. 而hook就是我们所说的钩子,它是通过钩子函数来捕获进程中的消息.它是面向所有进程的.所以人们称它为幕后黑手