Отправьте ключ ввода веб-браузеру1 - PullRequest
0 голосов
/ 10 марта 2011

Привет .

Я пытался;

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 ]

2 голосов
/ 10 марта 2011

Перед вызовом Keypd_Event(...).

убедитесь, что веб-браузер сфокусирован с помощью SetFocus(embeddedwb1.Handele).

Поскольку вы, вероятно, хотите отправить форму, рассматривали ли вы возможность сделать это с DOM? Вот некоторый код, который заполняет выбранное поле ввода и затем отправляет первую форму. Это прекрасно работает, если вы переходите к http://www.google.com,, но в реальном мире вам нужно быть намного осторожнее (поиск поля ввода по классу или идентификатору, проверка наличия формы и т. Д.)

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 голос
/ 10 марта 2011

если для отправки формы используется 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 голосов
/ 02 января 2016

Используйте это:

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

Этот код отправляет символ 13 (Введите код) в EmbeddedWB.

...