基本的にはブラウザ対象になるのですが、sendmessage等を用いてjavascriptを送信し、実行させる事は出来ますでしょうか。
例を探しているのですがなかなか見つからないので相談させていただきました。
chromeではURLの取得等は見つけましたがその先の事があまり見つかりません。
Delphi XEや10.2の環境です。
よろしくお願い致します。
ブラウザってなにを想定しているのか分かりませんが、
http://mrxray.on.coocan.jp/Delphi/plSamples/941_IEObject_InputClick.htm
など参考になるでしょうか?
基本ができれば、DOM操作だと思いますので。
# TEmbeddedWBが楽とは思いますが
Javascript のコードはテキストです.
sendmessage 等でテキストを送った場合,そのテキストを受け取る機能が実装されていれば,
Javascript として実行できることになります.
当然ですが,受け取る側のアプリに Javascript の実行機能が実装されていなければ意味がありません.
他の方が作成したアプリではそうはいきませんから,
実際には自分で作成するアプリに限られるのではないかと思います.
ウェブブラウザで直接 Javascript を実行してもいいのであれば,
IE 限定ですが,IE のオブジェクトに execScript というメソッドがあります.
[参考] -- 質問の内容と直接の関係はありませんが
[ Javascript engine for delphi based on spidermonkey ]
https://ht-deko.com/delphiforum/?vasthtmlaction=viewtopic&t=1258
Mr.XRAYさん、ありがとうございます。
webbrowserやchromiumを用いたものは出来るのですが、
プログラムとは分離した、通常のchromeに送信したいと思っています。
chromedriverなるものもあるようなのですが、少し難しいようなのでsendmessageのようなもので何とか送れないかと思っています。
一般的なブラウザを利用するという縛りがあるのでしたら
HTMLを書いたindex.html に外部ファイルのjavascriptを読み込ませるようにして
クライアント側はFTPを使ってその外部javascriptを書き換えるというやり方はどうでしょうか?
ただしクライアントの任意のタイミングでjavascriptは実行されません。
TWebBrowserを使用しても良いというのであれば下記の様なやり方があるようです。
山本隆の開発日誌 より
Delphi XE6のFireMonkeyモバイルアプリケーションでTWebBrowserのHTMLページにJavaScriptを実行する
https://www.gesource.jp/weblog/?p=6680
chromedriver というのは Google Chrome ブラウザを提供している本家である Google が
提供しているテストツールです.
本家が提供していますから,当然いろいろなテストが可能です.
WM_COPYDATA メッセージを SendMessage で他のアプリにテキストを送信すると,
他のアプリでは WM_COPYDATA メッセージを自動的に受け取ることができます.
ただし WM_COPYDATA メッセージを受け取るためのコードが実装されていて,
データを格納しているレコード型の設定が同じでなければ他のアプリでは取得できません.
前にレスした文章の意味は,Chrome ブラウザ等,他のアプリにはそのような機能は
実装されていないということです.
他のアプリを自分で作成するのであれば,そのような機能を実装できるということです.
Google Chrome には IE, エクセル,ワードのような COM が実装されていません.
したがって,自分のアプリから操作するのはかなり難しいと言えます.
chromedriver のように Chrome 用の API を使用するしかないと思われます.
takeさん、ありがとうございます。
>HTMLを書いたindex.html に外部ファイルのjavascriptを読み込ませるようにして
ページ自体は私がサーバで持つページではなく一般サイトのためこの方法を
用いる事はできないと思われます。
>TWebBrowserを使用しても良いというのであれば下記の様なやり方があるようです。
そうですね、こちらでできるのは簡単にできるのですが。
Mr.XRAYさん
>Google Chrome には IE, エクセル,ワードのような COM が実装されていません.
どこかのサイトでその事を見た事があります。
URLの取得ができるのであれば他の事もできるのではないかと
思ったのですが、できないのですね。
ありがとうございます。
chromedriverで頑張るか検討します。
ありがとうございました。