1

正しいフォーカスのウィンドウだけでなく、ac#Webブラウザのコントロール要素に直接キーを送信したいと思います。

現在、PostMessageとdocumentHandleを使用してキーを送信し、このようにフォーカスすることができます

すなわち擬似コード

HtmlElement el = getelement();
el.Focus();
IntPtr docptr = browser.Handle;
PostMessage(docptr,WM_KEYDOWN,1,0);
.... KEYCHAR, KEYUP..

誰かがバックグラウンドでこれを行うことができる方法を知っているので、要素に焦点が当てられていないのではないかと思っていました。基本的に、ブラウザのhandle /ptrではなくPostMessageまたはSendKeysAPIで使用するよりも、IntPtrをHtmlElement自体に取得する方法があります。

4

4 に答える 4

0

できません。これらはウィンドウのないコントロールであり、マウス/キーボードメッセージは親ウィンドウによって処理され、親はアクティブなコントロールのメッセージのみを中継します。

于 2010-04-19T23:20:51.537 に答える
0

これは間違った方法です。

APIを使用してHtmlElement、要素を直接操作できます。

正確な手順については、何をしようとしているのかを教えてください。

于 2010-04-19T01:49:13.790 に答える
0

WaitNやSeleniumのようなものを見てください。

IEには、ブラウザを制御するための優れたプログラミングインターフェイスもあります。

しかし、欠点があります...

私は現在、画像認識とマウス/キーの制御を使用してブラウザを制御するプログラムに取り組んでいます。これは、視覚的表現で本当にやりたいことしかできないためです。

ただし、それはコンピュータを支配し、完全な制御が必要になります。仮想マシンで実行しない限り。

于 2010-04-19T02:14:27.470 に答える
0

これを見つけるのに長い時間がかかりましたが、「Internet Explorer_Server」などでGetClassNameに応答するハンドルに到達するまで、子ウィンドウハンドルを繰り返し取得するには、子コマンドを使用してGetWindowをp/invokeする必要があります。

次に、そのhWndのPostMessageとWebBrowserのactiveElementがそれらを受信します。重要なもののように思われるので、そこにWM_KEYUPがあることを確認してください。

于 2010-11-05T05:36:12.023 に答える