VB后台按键

来源:百度知道 编辑:UC知道 时间:2024/05/23 13:26:40
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 FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long

Private Sub Form_Load()

End Sub

Private Sub Timer1_Timer()
Dim hwnd As Long ' 储存 FindWindow 函数返回的句柄
hwnd = FindWindow(vbNullString, "YB_OnlineClient") ' 取得进程标识符
If hwnd = 0 Then
Label1.Caption = "未运行"

Else
Label1.Caption = "已运行"
Text1.Text = hwnd
PostMessage hwnd, WM_KEYDOWN, VK_F1, 0& '按下F1键
PostMessage hwnd, WM_UP, VK_F1, 0& '释放F1键
End If
End Sub
问题补充:VB,后台按键还是不行啊,,

Private Const WM_KEYDOWN = &H100
Private Const WM_KEYUP = &H101
Private Const VK_F1 = &H70

上次回答常量写错了,不好意思!
你把上面3条放在API声明的下面!
另外,虽然你获得了窗体的句柄,但是一些软件响应快捷键的控件并不是主窗体,所以可能会出现没反应!这时你必须获得响应这些按键的控件句柄才行!

你的程序没错!

我有啊!
为程序注册热键
方法一:修改注册表
Private Declare Function RegisterHotKey Lib "user32" (ByVal hWnd As Long, ByVal id _
As Long, ByVal fsModifiers As Long, ByVal vk As Long) As Long
Private Declare Function UnregisterHotKey Lib "user32" (ByVal hWnd As Long, ByVal id _
As Long) As Long
Private Declare Function PeekMessage Lib "user32" Alias "PeekMessageA" (lpMsg As Msg, _ ByVal hWnd As Long, ByVal wMsgFilterMin As Long, ByVal wMsgFilterMax As Long, ByVal _ wRemoveMsg As Long) As Long
Private Declare Function WaitMessage Lib "user32" () As Long
Private Type POINTAPI
x As Long
y As Long
End Type
Private Type Msg