2012-06-22 39 views
0

我正在使用網絡瀏覽器控件打開一個網站。在網站的第三頁上,有一個按鈕。因此,在加載此第三頁後,我想按編程方式首先將控制焦點放在按鈕上,然後在加載後立即在網站的第三頁上按ENTER鍵。我正在使用vb.net 2008平臺來執行此操作。請問任何人PLZ告訴我的解決方案?如何以編程方式按Tab鍵並按vb.net編碼輸入密鑰

+1

您應該重新考慮您的解決方案。最大的原因之一是,如果網站的佈局有任何重大變化,它將無法正常工作。有比打開瀏覽器和模擬擊鍵更好的方法來打電話給URL。 – Wug

+0

如何模擬擊鍵? – user1473832

+1

這是一條評論,而不是答案。我不知道。我建議你考慮一種不同的方法。 – Wug

回答

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 

在你的情況下,你可能只需要調用sendKeyToWindow功能與網頁瀏覽器控件的句柄:

SendKeyToWindow(WebBrowser1.Handle,CHR(& H9)) SendKeyToWindow(WebBrowser1.Handle,Chr(13))

希望有幫助。

+0

可以請你通過上面的評論來解釋代碼的每一行 – user1473832

+0

我添加了一些評論和一個類似於你正在尋找的例子。我不知道我能否比這更清楚。 –

+0

代碼不能正常工作 – user1473832