将Enter键发送到Webbrowser1

时间:2011-03-10 09:10:43

标签: delphi events browser key send

你好

我试过了;

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);

我的程序已经完成。但这是为所有应用程序发送回车键的代码。我想只为我的程序编码。感谢您帮助我

3 个答案:

答案 0 :(得分:2)

在致电SetFocus(embeddedwb1.Handele)之前,请确保使用Keypd_Event(...)关注WebBrowser。

既然您可能想要提交表单,您是否考虑过使用DOM?这里有一些代码填充选定的输入字段,然后提交第一个表单。如果您导航到http://www.google.com,这很好用,但在现实世界中,您需要更加小心(按类或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)

如果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; 

答案 2 :(得分:-1)

使用此:

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

此代码将char 13(输入代码)发送到EmbeddedWB。