2011-03-10 71 views
0

你好發送輸入密鑰到Webbrowser1

我試過;

PostMessage(embeddedwb1.Handle,VK_RETURN,0,0); 
sendmessage(embeddedwb1,wm_keyup,vk_return,0); 
embeddedwb1.perform(wm_keyup,vk_return,0); 

但我的程序不起作用。 和我試過;

Keybd_Event(VK_RETURN, 1, 0, 0); 

我的程序已經正常工作,但這是所有應用程序發送回車鍵的代碼。我想爲我的程序編寫代碼。 謝謝你幫我

回答

2

在致電Keypd_Event(...)之前,請確保WebBrowser專注於使用SetFocus(embeddedwb1.Handele)

既然您可能想要提交表單,您是否考慮過使用DOM來做這件事?以下是一些填充選定輸入字段的代碼,然後提交第一個表單。如果您導航到http://www.google.com,但在現實世界中你需要很多更小心這只是正常(搜索輸入字段由class和id,檢查是否有一個表格等)

procedure TForm23.Button2Click(Sender: TObject); 
begin 
    ((W.Document as IHTMLDocument2).activeElement as IHTMLInputElement).value := 'Search'; 
    ((W.Document as IHTMLDocument2).forms.item(0, '') as IHTMLFormElement).submit; 
end; 
+1

+1 DOM遠比僞造輸入更好! – 2011-03-10 09:37:26

+0

謝謝,但我必須點擊; input type =「submit」id =「submitAction」value =「Cal」> - submitaction button.so我試過了; EmbeddedWb1.OleObject.Document.getElementByID('SubmitAction')。click; - 沒有work.and我試圖與嵌入式wb1.setfocus之前調用keypd事件 - 不工作:( – 2011-03-10 09:49:54

+1

@卡迪爾,你提交表單,而不是按鈕;尋找表單,並調用提交,因爲我做了什麼!意思是「不工作」?它不提交表單?編譯器不喜歡代碼? – 2011-03-10 10:02:59

1

如果Javascript用於提交表單,那麼Cosmin的答案不起作用,我認爲。在這種情況下,您必須知道按鈕的JS代碼並從您的程序中執行它。例如;在我的頁面中,我使用JQuery來提交表單。所以:

procedure TForm1.Button1Click(Sender: TObject); 
var 
    js_code : string; 
    Win : IHTMLWindow2; 
begin 
    Win := (WebBrowser1.Document as IHTMLDocument2).parentWindow; 
    js_code := '$("#formlogin").submit();'; 
    Win.execScript(js_code, 'JavaScript'); 
end; 
+0

您的代碼完全一樣(使用DOM提交表單)唯一的區別是您使用JQuery搜索DOM,然後調用submit()。當表單使用JavaScript提交時,您將調用一個JavaScript函數,在真正提交表單之前有機會進行驗證。如果'js_code'顯示一個函數調用,使其更具現實感,我會動起來。 – 2011-03-10 18:44:29

-1

使用此:

PostMessage(EmbeddedWB1.HWND, WM_CHAR, 13, 0); 

該代碼發送字符13(回車代碼)EmbeddedWB。

+0

解釋您的推理。 – 2016-01-02 14:14:15