Delphi アプリケーションで Chromium コンポーネントを使用しています。
次の動作が必要です。
ユーザーが Web ページの特定のボタンをクリックすると、Delphi アプリケーション(「コンテナ」)はコマンドを実行する必要があります(... を使用して外部実行可能ファイルを起動します)。
出来ますか ?
アップデート:
クリック イベントの DOM イベント リスナーを実際に要求したので、Google 検索ボタンのクリック イベント ( ID を持つ要素gbqfba
)をリッスンする次の例を確認してください。
uses
ShellAPI, cefvcl, ceflib;
procedure TForm1.Button1Click(Sender: TObject);
begin
Chromium1.Load('www.google.com');
end;
procedure OnClickEvent(const AEvent: ICefDomEvent);
begin
ShellExecute(Form1.Handle, nil, 'notepad.exe', nil, nil, SW_SHOWNORMAL);
end;
procedure OnExploreDOM(const ADocument: ICefDomDocument);
var
DOMNode: ICefDomNode;
begin
DOMNode := ADocument.GetElementById('gbqfba');
if Assigned(DOMNode) then
DOMNode.AddEventListenerProc('click', True, OnClickEvent);
end;
procedure TForm1.Chromium1LoadEnd(Sender: TObject; const browser: ICefBrowser;
const frame: ICefFrame; httpStatusCode: Integer; out Result: Boolean);
begin
if Assigned(frame) then
begin
// here you should check the frame.Url to verify if you're on the right URL
// before you try to search for the element and attach the event if found
frame.VisitDomProc(OnExploreDOM);
end;
end;