如何在程序中实现发送q的命令?谢谢!
解决方案 »
- VB 多文档
- 为什么在vb中chr(13)要与chr(10)同时运用才能达到换行的效果?原理是啥?
- 如何触发Lost Focus事件
- 有个小问题请教大家!
- 我做了一个半透明的PNG图片,如何把它做成窗口
- 换行
- 为什么我提交这样一个语句居然RecordCount值是-1郁闷中,高手解惑!
- 我刚接触数据库,有很多问题
- 请问如何将含有Image或Shape的DataReporter报表导出?
- 我要考程序员,谁有历年的试题?给点建议?
- 关于打包问题(回者有分!!!!!!!!!1)
- 怎样才能获取各个控件在窗体中的位置?获取后保存这些数据,下次打开时再调用这些数据呢?高手来帮忙吧,给分会更多,若给出实例/代码更
SendKeys "{q}"
在你的程序中不知道有没有接收q键的代码,当你按q键时,触发事件,你的程序接收到这个
命令,马上进行响应,就可以退出MS-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
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
不能用 SendKeys 将按键消息发送到这样一个应用程序,这个应用程序并没有被设计成在 Microsoft Windows 中运行。