delphi2007 教程

delphi2007 教程

首页 新随笔 联系 聚合 管理
  1013 Posts :: 0 Stories :: 28 Comments :: 0 Trackbacks
PostMessage的疑问? Delphi / Windows SDK/API
http://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。  
 

时间太长,算了,结贴。

posted on 2009-02-03 09:49 delphi2007 阅读(419) 评论(0)  编辑 收藏 引用
只有注册用户登录后才能发表评论。