3

私は、C++ アプリケーションで次のことを実行できるようにすることを検討していました。

  1. インターネットエクスプローラーを開く
  2. ウェブページを開く
  3. Web ページの特定のフォームに名前とパスワードを入力します
  4. ウェブページの送信ボタンをクリックして、新しいページを開きます

インターネットで検索したところ、COM を使用するとこれが可能になるようですが、それについては間違っているかもしれません。私は現在、COM を学ぶために最善を尽くしていますが、いくつかの助けがあれば幸いです。MFCを使わずにこれをやろうとしています。

私が探しているこの質問に気付きましたが、提案された解決策を理解するのに苦労しています。たとえばIWebBrowser2、ツールボックスにオプションがありません。

編集:

質問を明確にするために、コード化された UI テストを実行するだけでこのタスクを C# バージョンで完了しましたが、これは C++ では機能しません。私は(アプリケーション自体ではなく)IEを開き、ユーザー名とパスワードのフォームを見つけ、それらに文字列を渡し、ページの送信ボタンを見つけてクリックしようとしています。

4

4 に答える 4

1

これはC++から非常に可能です。キーストロークやウィンドウ処理を行うには、winapiに飛び込む必要があります。

すべてのコードに入るつもりはありませんが、次のようなことをする必要があります。

  • ieを起動します(Webページでコマンドライン引数を指定すると、そのページが開きます)。
  • ieウィンドウがフォーカスされていることを確認します(シンプルにしたい場合は待つか、ウィンドウのAPIを使用して開いている各ウィンドウを調べて目的HANDLEのウィンドウを見つけます)
  • +SendInputを送信するために使用します(URLバーにフォーカスを合わせるために、Firefoxでは代わりになります)AltDCTRL + L
  • SendInput必要に応じて、JavaScriptインジェクションを使用してDOMを変更します
  • 上記のJSインジェクション機能を使用して、フォームを送信することもできます(すべてが希望どおりになった後)。
于 2012-05-08T12:51:58.847 に答える
0

はい、可能ですが、アプリケーションに Web ブラウザー コントロールを埋め込む必要があり、簡単ではありません (COM を介して Internet Explorer の外部インスタンスで DHTML を自動化できるとは思いません)。

あなたは MFC を使いたくないようですが、これが問題をさらに複雑にしています。おそらく、ATL を介して実行できますが、フレームワークなしで実行しようとしてもお勧めできません。

MFC を使用できる場合は、CDHtmlDialogフォームを使用して基になる COM インターフェイスにアクセスし、アクションを自動化できます。

過去に、HTML をユーザー インターフェイスとして使用する MFC アプリケーションを開発しましたが、ここにあるCDHTMLViewクラスを使用しました: http://www.codeproject.com/Articles/1783/Integrating-DHTML-into-MFC-ビュー

これは、DHTML イベントの処理方法とインターフェイスの操作方法を学習するためのエントリ ポイントとして使用できIWebBrowser2ます。

于 2012-05-08T10:54:00.650 に答える
0

あなたが説明していることを正確に実行できるWebDriverを実際に見てください。InternetExplorerDriver 内部の詳細については、(http://code.google.com/p/selenium/wiki/InternetExplorerDriverInternals) を参照してください。プロジェクトを直接使用できない場合でも、ソースを参照して、やりたいことをどのように達成できるかをよりよく理解することができます。

于 2012-05-08T12:17:36.983 に答える
-1

あなたがしたいことはあまり意味がありません。

ブラウザー ビューをプログラムに埋め込むために使用できる API は多数あります。たとえば、Qt はこれを提供します。

次に、自分で HTTP POST リクエストを実行し、得られた回答をブラウザー ビューに表示するだけです。

それははるかにクリーンなソリューションです。

プロのヒント: Internet Explorer は使用しないでください。

于 2012-05-08T10:40:21.150 に答える