3


0

WinForms Web Browserコントロールはリフォーカスを強制しますか?

ボタンを繰り返しクリックする必要があるWebプロセスを自動化しようとしています。 コードがそのボタン(フォームにあるWebBrowserコントロールから取得したHtmlElement)をクリックすると、アプリケーション、より具体的にはWebBrowserコントロールにフォーカスが戻ります。 プロセスの進行中にユーザーが他のことを行えるように、このプロセスをより自動化したいと考えていますが、ウィンドウがフォーカスを獲得しているためにウィンドウ自体が最小化されていない場合はできません。

クリックに関連付けられているコードは次のとおりです。

HtmlElement button = Recruiter.Document.GetElementById("recruit_link");
button.InvokeMember("click");

また、button.RaiseEvent( "onclick")を試してみましたが、まったく同じ結果が得られていますが、フォーカスの問題などがすべてあります。

また、フォームを非表示にしようとしましたが、InvokeMember / RaiseEventメソッドが呼び出されると、作業していたものはフォーカスを失いますが、フォームが表示されないため、フォーカスはどこにも行きません。

webbrowserのデフォルト以外の唯一のことは、URIがページに設定され、ScriptErrorsSuppressedがTrueに設定されていることです。

2 回答


1


IE7以降では、WebブラウザーサイトにIProtectFocusを実装して、フォーカスの変更を拒否できます。 この種のカスタマイズをサポートする生のActiveXまたはそのラッパーを使用する場合は、はるかに良いでしょう。 csexwb。 winform webbrowserコントロールを使用する必要がある場合は、http://www.codeproject.com/KB/cpp/ExtendedWebBrowser.aspx [独自のwebbrowserサイトを作成]する必要があります。


1


なぜこのボタンをクリックする必要があるのですか? 何らかのフォームを送信していますか? はいの場合、 `WebClient`を使用して、グラフィックインターフェイスなしでフォームの送信をシミュレートできます。

基本的に、重要なことはほとんど何でも Get` Post`または multipart / post`を使用してWebサイトに接続する必要があるため、 WebClient`は完璧です。 このボタンがオンになっているサイトを取得し、それを解析してクリックするだけで取得できます。 そして、独自のアクションをシミュレートします。