资讯   |   开发   |   选机中心   |   产品大全 | IBM | 惠普 | 联想 | 戴尔 | 苹果 | 神舟
更多: | 华硕 | 明基 | 方正 | 紫光 | TCL | 夏新 | 联宝 | 宏碁 | 七喜 | 长城 | 清华同方 | 海尔 | 三星 | 东芝 | 索尼 | 富士通 | LG | 技术 | ddnoon
当前位置:笔记本 > 软件开发 >
Advertisement
文章正文

如何用sendmessage 模拟键盘按键?!

类型:转载   责任编辑:asp.net   日期:2007/05/23


热门软件下载:


   

我想对某个窗体发送按键   "1"   被按下的消息.谁能给我个例子?!  
  我想发送wm_keydown,wm_keyup的消息,可是我对这两消息的参数不理解.

网友回答:

发表者:BlueBeer

改用keybd_event吧  
   
   
  【函数】  
  keybd_event  
   
  【操作系统】  
  Win9X:Yes  
  WinNT:Yes  
   
  【声明】  
  keybd_event   Lib   "user32"   Alias   "keybd_event"   (ByVal   bVk   As   Byte,   ByVal   bScan   As   Byte,   ByVal   dwFlags   As   Long,   ByVal   dwExtraInfo   As   Long)As     Boolean    
   
  【说明】  
   
      这个函数模拟了键盘行动    
   
  【返回值】  
   
   
  【其它】  
   
      这个函数支持屏幕捕获。在win95和nt4.0下这个函数的行为不同  
   
  【参数表】  
      bVk   ------------     Byte,欲模拟的虚拟键码  
   
      bScan   ----------     Byte,键的OEM扫描码  
   
      dwFlags   --------     Long,零;或设为下述两个标志之一  
      KEYEVENTF_EXTENDEDKEY  
      指出是一个扩展键,而且在前面冠以0xE0代码  
      KEYEVENTF_KEYUP  
      模拟松开一个键  
   
      dwExtraInfo   ----     Long,通常不用的一个值。api函数GetMessageExtraInfo可取得这个值。允许使用的值取决于特定的驱动程序  
 

发表者:BlueBeer

或者更简单的直接用SendKeys  
   
  SendKeys   语句  
               
   
  将一个或多个按键消息发送到活动窗口,就如同在键盘上进行输入一样。  
   
  语法  
   
  SendKeys   string[,   wait]  
   
  SendKeys   语句的语法具有以下几个命名参数:  
   
  部分   描述    
  string   必需的。字符串表达式,指定要发送的按键消息。    
  Wait   可选的。指定等待方式的   BooleandefBooleanDataType@veendf98.chm   值。如果为   False,则控件在按键发送出去之后立刻返回到过程。如果为   True,则按键消息必须在控件返回到过程之前加以处理。    
   
   
  说明  
   
  每个按键由一个或多个字符表示。为了指定单一键盘字符,必须按字符本身的键。例如,为了表示字母   A,可以用   "A"   作为   string。为了表示多个字符,就必须在字符后面直接加上另一个字符。例如,要表示   A、B   及   C,可用   "ABC"   作为   string。  
   
  对   SendKeys   来说,加号   (+)、插入符   (^)、百分比符号   (%)、上划线   (~)   及圆括号   (   )   都具有特殊意义。为了指定上述任何一个字符,要将它放在大括号   ({})   当中。例如,要指定正号,可用   {+}   表示。方括号   ([   ])   对   SendKeys   来说并不具有特殊意义,但必须将它们放在大括号中。在其它应用程序中,方括号有特殊意义,在出现动态数据交换   (DDE)   的时候,它可能具有重要意义。为了指定大括号字符,请使用   {{}   及   {}}。  
   
  为了在按下按键时指定那些不显示的字符,例如   ENTER   或   TAB   以及那些表示动作而非字符的按键,请使用下列代码:  
   
  按键   代码    
  BACKSPACE   {BACKSPACE},   {BS},   或   {BKSP}    
  BREAK   {BREAK}    
  CAPS   LOCK   {CAPSLOCK}    
  DEL   or   DELETE   {DELETE}   或   {DEL}    
  DOWN   ARROW   {DOWN}    
  END   {END}    
  ENTER     {ENTER}或   ~    
  ESC   {ESC}    
  HELP   {HELP}    
  HOME   {HOME}    
  INS   or   INSERT   {INSERT}   或   {INS}    
  LEFT   ARROW   {LEFT}    
  NUM   LOCK   {NUMLOCK}    
  PAGE   DOWN   {PGDN}    
  PAGE   UP   {PGUP}    
  PRINT   SCREEN   {PRTSC}    
  RIGHT   ARROW   {RIGHT}    
  SCROLL   LOCK   {SCROLLLOCK}    
  TAB   {TAB}    
  UP   ARROW   {UP}    
  F1   {F1}    
  F2   {F2}    
  F3   {F3}    
  F4   {F4}    
  F5   {F5}    
  F6   {F6}    
  F7   {F7}    
  F8   {F8}    
  F9   {F9}    
  F10   {F10}    
  F11   {F11}    
  F12   {F12}    
  F13   {F13}    
  F14   {F14}    
  F15   {F15}    
  F16   {F16}    
   
   
  为了指定那些与   SHIFT、CTRL   及   ALT   等按键结合的组合键,可在这些按键码的前面放置一个或多个代码,这些代码列举如下:  
   
  按键   代码    
  SHIFT   +    
  CTRL     ^    
  ALT   %    
   
   
  为了说明在按下其它按键时应同时按下   SHIFT、CTRL、及   ALT   的任意组合键,请把那些按键的码放在括号当中。例如,为了说明按下   E   与   C   的时候同时按下   SHIFT   键,请使用   "+(EC)"。为了说明在按下   E   的时候同时按下   SHIFT   键,但接着按   C   而不按   SHIFT,则使用   "+EC"。  
   
  为了指定重复键,使用   {key   number}   的形式。必须在   key   与   number   之间放置一个空格。例如,{LEFT   42}   意指   42   次按下   LEFT   ARROW   键;{h   10}   则是指   10   次按下   H   键。  
   
  注意   不能用   SendKeys   将按键消息发送到这样一个应用程序,这个应用程序并没有被设计成在   Microsoft   Windows   中运行。Sendkeys   也无法将   PRINT   SCREEN   按键   {PRTSC}   发送到任何应用程序。  
 

发表者:leolan

Option   Explicit  
   
  Private   Declare   Function   SendMessage   Lib   "user32.dll"   Alias   "SendMessageA"   (ByVal   hwnd   As   Long,   ByVal   wMsg   As   Long,   ByVal   wParam   As   Long,   ByRef   lParam   As   Any)   As   Long  
   
  Private   Const   WM_CHAR   As   Long   =   &H102  
   
   
  Private   Sub   Command1_Click()  
          SendMessage   Me.hwnd,   WM_CHAR,   vbKey1,   ByVal   0&  
  End   Sub  
   
  Private   Sub   Form_KeyPress(KeyAscii   As   Integer)  
          Print   Chr$(KeyAscii)  
  End   Sub  
   
  Private   Sub   Form_Load()  
          Me.AutoRedraw   =   True  
  End   Sub

发表者:jjkk168

SendMessage   Me.hwnd,   WM_CHAR,   vbKey0,0


 

 
热门推荐笔记本: IBM笔记本
相关文章:
webmaster:popbb@126.com   最佳浏览:1024X768 MSIE
©2007 popbb.net All Rights Reserved