0

我在自定義任務窗格控件(用戶控件)中有一個Web瀏覽器控件,並且一旦我的Outlook打開時就將其作爲邊欄打開(我已將它創建爲Outlook加載項Visual Studio 2013)。 Web瀏覽器控件在其中有一個登錄表單,並且在Outlook打開後,我想將焦點放在Web瀏覽器控件中的輸入控件上。我已經嘗試了幾種技巧,例如將焦點放在自定義用戶控件上,然後在表單加載後將焦點放在輸入控件上,但它沒有把焦點放在它上面。此外,我一直試圖允許使用Tab和Delete鍵在Web瀏覽器控件中工作,以便我可以選擇其他控件並使用它,就像我們在普通瀏覽器窗口中一樣。請讓我知道我是如何實現這一目標的,因爲我沒有想法。在我的Web瀏覽器控件中啓用Tab鍵

乾杯。

+0

這是嵌入在Outlook中的瀏覽器控件的已知問題。考慮使用另一個控件來顯示登錄表單或使用Windows API函數來設置鉤子。 –

+0

你能推薦另一種實現相同的瀏覽器控制方式嗎?我有一個手機網站,我試圖在Outlook中訪問,並將其託管在我正在訪問的服務器上,唯一能找到的方式是使用網絡瀏覽器控件。你有其他建議嗎? – Neophile

+0

我相信你可以創建REST API並使用它們。 –

回答

0

你只能做,如果你安裝Windows鉤子(SetWindowsHookExW(WH_GETMESSAGE, YourHookProc, 0, GetCurrentThreadId())和鉤PROC檢測到的消息都應該去你的瀏覽器,並相應地對它們進行重定向。

+0

感謝您的答案。如果可能的話,你能用這個例子來幫助我嗎?我真的堅持這一點。 – Neophile

+0

我無法發佈代碼,因爲它是商業產品的一部分,但我很樂意回答您的問題。 –

+0

初學者:我如何安裝windows hook? – Neophile

0

它的工作原理部分這種方式,但不是100 %。首先我必須設置TabStop屬性爲True我的WebBrowser控件,然後只將焦點設置一旦文件被加載,這是它。該選項卡中,刪除,退格鍵都運行正常。

Private Sub CustomTaskPane_Load(sender As Object, e As EventArgs) Handles Me.Load 
     TestWebBrowser.Size = New Drawing.Size(Me.Width, Me.Height) 

     Me.Focus() 

     TestWebBrowser.Navigate(url) 

     WaitForPageLoad() 

     TestWebBrowser.TabIndex = 0 
     TestWebBrowser.TabStop = True 
    End Sub 

Private Sub TestWebBrowser_DocumentCompleted(sender As Object, e As Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles TestWebBrowser.DocumentCompleted 

     ' Now set the focus on the Web Browser Control 
     TestWebBrowser.Focus() 
End Sub 
1

嘗試使用Excel WebBrowser控件而不是System.Windows.Forms WebBrowser;它處理特殊的密鑰轉發如TAB,DEL,CTRL + V等

對於從

new System.Windows.Forms.WebBrowser(); 

的web瀏覽器構造器更改爲

new Microsoft.Office.Tools.Excel.Controls.WebBrowser(); 

您需要將引用添加到您的項目: 項目/ Add Referernce/Extensions select Microsoft.Tools.Outlook & Microsoft.Tools.Outlook.v4.0.Utilities

Doc:https://msdn.microsoft.com/en-us/library/microsoft.office.tools.excel.controls.webbrowser.aspx