例如发送CTRL+A 怎样做!!请教

解决方案 »

  1.   

    一般不使用SendMessage语句,而使用VB的SendKeys语句发送,详见VB帮助。如果想象特定的程序发送按键,通常在使用SendKeys前调用AppActivate使该程序成为当前活动的程序。 
        如: 
        AppActivate "My Program" 
        SendKeys "^A" 
        如果使用SendMessage,可以发送WM_KEYDOWN、WM_CHAR,但这涉及到该软件到底处理哪个消息,如何处理,有时可能不能获得理想效果。如果发送CTRL+B,需要发送两次,一次是发送CTRL,一次是发送A。
      

  2.   

    面的函数可以利用kb_event实行一些系统操作Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
    Private Const VK_LWIN = &H5BPrivate Const KEYEVENTF_KEYUP = &H2Private Const VK_APPS = &H5DPrivate Const VK_PLAY = &HFA 
    Private Sub DoAction(Index As Integer) Dim VK_ACTION As Long
     Select Case Index  Case 0: '打开资源管理器   VK_ACTION = &H45  Case 1: '查找文件   VK_ACTION = &H46  Case 2: '最小化所有窗口   VK_ACTION = &H4D  Case 3: '运行程序   VK_ACTION = &H52  Case 4: '弹出Win菜单   VK_ACTION = &H5B  Case 5: '将计算机转入睡眠状态   VK_ACTION = &H5E  Case 6: '执行Windows帮助   VK_ACTION = &H70 End Select
     Call keybd_event(VK_LWIN, 0, 0, 0) Call keybd_event(VK_ACTION, 0, 0, 0) Call keybd_event(VK_LWIN, 0, KEYEVENTF_KEYUP, 0)End Sub 
      

  3.   

    一般热键(组合键)在程序中都对应一个 wID,
     找到后用  SendMessage( hWnd, WM_COMMAND,  wID ,0 )   即可。