如何在程序中实现发送q的命令?谢谢!

解决方案 »

  1.   

    Text1.SetFocus
    SendKeys "{q}"
      

  2.   

    发送Q键是很简单的,正如他们所说的:用Sendkeys
    在你的程序中不知道有没有接收q键的代码,当你按q键时,触发事件,你的程序接收到这个
    命令,马上进行响应,就可以退出MS-DOS了
      

  3.   

    '这是2000下向DOS程序发按键的程序,不过,只能发数字
    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
    Private Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
    Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
    Private Declare Sub keybd_event Lib "user32.dll" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
    Private Declare Sub SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long)
    Private Declare Function SetForegroundWindow& Lib "user32" (ByVal hwnd&)
    Const SW_SHOWNORMAL = 1
    Const WM_CLOSE = &H10Const VK_H = 72
    Const VK_E = 69
    Const VK_L = 76
    Const VK_O = 79
    Const KEYEVENTF_EXTENDEDKEY = &H1
    Const KEYEVENTF_KEYUP = &H2Const HWND_TOPMOST = -1
    Const HWND_NOTOPMOST = -2
    Const SWP_NOSIZE = &H1
    Const SWP_NOMOVE = &H2
    Const SWP_NOACTIVATE = &H10
    Const SWP_SHOWWINDOW = &H40
    Private Sub cmdOut_Click()
        Dim WinWnd As Long, Ret As String, RetVal As Long, lpClassName As String
        
        Ret = "Command Prompt"
        WinWnd = FindWindow("ConsoleWindowClass", vbNullString)
        If WinWnd = 0 Then MsgBox "Couldn't find the window ...": Exit Sub
        
        
        ShowWindow WinWnd, SW_SHOWNORMAL
        SetForegroundWindow WinWnd
        
        Dim nIndex As Integer, sText As String, nCount As Integer
        sText = txt.Text: nCount = Len(sText)
        For nIndex = 1 To nCount
            KeyPress Asc(Mid(sText, nIndex, 1))
        Next
    End SubPrivate Sub KeyPress(ByVal lChar As Long)
        keybd_event lChar, 37, 75, 0
        keybd_event lChar, 0, KEYEVENTF_KEYUP, 0    '只能发数字
    End Sub
      

  4.   

    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
    Private Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
    Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
    Private Declare Sub keybd_event Lib "user32.dll" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
    Private Declare Sub SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long)
    Private Declare Function SetForegroundWindow& Lib "user32" (ByVal hwnd&)
    Const SW_SHOWNORMAL = 1
    Const WM_CLOSE = &H10Const VK_H = 72
    Const VK_E = 69
    Const VK_L = 76
    Const VK_O = 79
    Const KEYEVENTF_EXTENDEDKEY = &H1
    Const KEYEVENTF_KEYUP = &H2Const HWND_TOPMOST = -1
    Const HWND_NOTOPMOST = -2
    Const SWP_NOSIZE = &H1
    Const SWP_NOMOVE = &H2
    Const SWP_NOACTIVATE = &H10
    Const SWP_SHOWWINDOW = &H40
    Private Sub cmdOut_Click()
        Dim WinWnd As Long, Ret As String, RetVal As Long, lpClassName As String
        
        Ret = "Command Prompt"
        WinWnd = FindWindow("ConsoleWindowClass", vbNullString)
        If WinWnd = 0 Then MsgBox "Couldn't find the window ...": Exit Sub
        
        
        ShowWindow WinWnd, SW_SHOWNORMAL
        SetForegroundWindow WinWnd
        
        Dim nIndex As Integer, sText As String, nCount As Integer
        sText = txt.Text: nCount = Len(sText)
        For nIndex = 1 To nCount
            KeyPress Asc(Mid(sText, nIndex, 1))
        Next
    End SubPrivate Sub KeyPress(ByVal lChar As Long)
        keybd_event lChar, 37, 75, 0
        keybd_event lChar, 0, KEYEVENTF_KEYUP, 0    '只能发数字
    End Sub
      

  5.   

    不行啊,好像SendKeys有这样一个限制:
    不能用 SendKeys 将按键消息发送到这样一个应用程序,这个应用程序并没有被设计成在 Microsoft Windows 中运行。