PostMessage的疑问? Delphi / Windows SDK/APIhttp://www.delphi2007.net/DelphiAPI/html/delphi_20061114212346233.html
以前已经知道使用消息函数PostMessage或SendMessage就可以给别的程序发消息,觉得很容易。
像“按键精灵”此类软件,也应该是使用发消息,模拟键盘鼠标信息的。
最近,也想编一个类似的程序,谁知不试不知道,一使用,才发现问题多多。
1、网上很多文章都说,使用PostMessage发消息,可以用记事本测试。
如:
PostMessage(handle, WM_KEYDOWN, VK_0, 9)
这句,我给记事本发消息,记事本没反应。(VK_9我已经定义了,就是数字9)
我试了计算器,可以用。WORD下也可以用。就记事本不能用。
PostMessage(handle, WM_KEYDOWN, VK_F5, 0)
这个在记事本下就可以执行了。
PostMessage(handle, WM_KEYDOWN, VK_TAB, 0)
这句两个软件下都没反应。我加了一句
PostMessage(handle, WM_KEYUP, VK_TAB, 0)
情况也是一样。
2、第二点,就是后台执行的问题。
作一个循环给后台发消息,如WORD。
如发送1000个‘A’字符。
只要焦点离开WORD,好像WORD就不响应消息了。再切换回去,才能继续执行。
但是这两个问题,我使用了一个叫做“按键游侠”的程序,这两个试验都能在以上三个软件中正确正常执行。
难道还有另一个消息发送函数,或者PostMessage函数还有新的参数可以达到以上效果?
键盘消息的相应随应用程序而异,有些响应WM_KEYDOWN,有些响应WM_KEYUP,有些响应WM_CHAR,有些干脆不响应,直接去读键盘的字符缓冲区
学习!
恩
你是怎么取得WORD的handle的 我猜是这个取得方法不对 焦点的转移才带来问题
友情接分;
phalcon(^o^)
我想handle应该没问题,要不然WORD在第一种情况下也会出问题。
还有SendMessage。
时间太长,算了,结贴。