私はウェブサイトを開いているウェブブラウザコントロールを使用しています。ウェブサイトの 3 ページ目にボタンがあります。したがって、この 3 ページ目の読み込み後、プログラムで TAB キーを押して、最初にボタンにコントロール フォーカスを移動し、読み込み後、ウェブサイトの 3 ページ目でプログラムで ENTER キーをすぐに押します。これを行うために vb.net 2008 プラットフォームを使用しています。親切に誰か解決策を教えてください???
3806 次
1 に答える
0
最初に、キーを送信するウィンドウ ハンドルを見つけてから、必要な実際のキーを送信する必要があります。これを行うために必要なメソッドは次のとおりです。
'API calls
Public Declare Function FindWindowExA Lib "user32.dll" (ByVal hWnd1 As IntPtr, ByVal hWnd2 As Int32, ByVal lpsz1 As String, ByVal lpsz2 As String) As IntPtr
Public Declare Function SendMessageA Lib "user32.dll" (ByVal hwnd As IntPtr, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer
'Function to find window by either ClassName or WindowText
Public Shared Function FindWindowEx(ByVal hWndParent As IntPtr, ByVal hWndChildAfter As Int32, ByVal ClassName As String, ByVal WindowName As String) As IntPtr
Return FindWindowExA(hWndParent, hWndChildAfter, ClassName, WindowName)
End Function
'Function to send pressed keys to specified window by handle
Public Shared Function SendKeyToWindow(ByVal hwnd As IntPtr, ByVal data As String) As Boolean
Try
Dim rc As Int32
Dim asciiChar As Byte
If data.Length < 1 Then 'if no data
Return True
End If
'If data.Length > 1 Then
' data = data.ToUpper
'End If
'sendMessageA is used to issue messages to windows simulating keypresses
Select Case data.ToUpper
Case Chr(13)
rc = SendMessageA(hwnd, WM_KEYDOWN, &HD, &H1C0001) 'send Enter Key
rc = SendMessageA(hwnd, WM_CHAR, &HD, &H1C0001) 'send Enter Key
rc = SendMessageA(hwnd, WM_KEYUP, &HBE, &HC0340001) 'send Ener Key
Case Chr(&H9) 'tab key
rc = SendMessageA(hwnd, WM_KEYDOWN, &H9, &HF0001) 'send tab Key
rc = SendMessageA(hwnd, WM_KEYUP, &H9, &HC00F0001) 'send tab Key
Case Else
asciiChar = CByte(Asc(data.Substring(0, 1)))
rc = SendMessageA(hwnd, WM_CHAR, asciiChar, 0) 'send 0 Key
End Select
Return True
Catch ex As Exception
Return False
End Try
Return False
End Function
あなたのインスタンスでは、webbrowser コントロールのハンドルを使用して sendKeyToWindow 関数を呼び出す必要があるだけです。
SendKeyToWindow(WebBrowser1.Handle, Chr(&H9)) SendKeyToWindow(WebBrowser1.Handle, Chr(13))
それが役立つことを願っています。
于 2012-06-22T05:57:24.943 に答える