2010-11-21 22 views
1

ブラウザの画像生成に取り組んでいますが、ブラウザのスナップショットをコードからWindowsフォームに入れています。しかし、特定の時間にブラウザがロードされない場合(15秒と仮定)、ブランクのスナップショットが発生します。誰でも私にこれを手伝ってください。現在のブラウザにC#コードがロードされているかどうかを確認する方法

+0

あなたはWinフォーム内でブラウザ要素を得たことを言うことを意味し、それはページをロードして行われたときに知りたいですか? – Alxandr

+0

ブラウザはwinformにはありませんが、私のwinformアプリケーションはブラウザを起動します。nブラウザを起動します。nブラウザのページのスナップショットを取得します。私のアプリは、ページがロードされているかどうかを知ることができません。 – bynx

答えて

3

あなたがしようとしていることを正確に理解していれば、私は完全にはわかりませんが、私はそれを刺すでしょう:ユーザーのデフォルトWebとして設定されているプログラムブラウザを開き、BitBltのような何かをして、スクリーンショットを撮ってください。

しかし、あなたが気付いたように、あらかじめ定義された間隔を待つことは難しく、希望ブラウザが完全にロードされました。代わりにプロセスを実行した後にWaitForIdleInputのようなものを試すことができます。プロセスの初期化が完了し、アイドル状態(ユーザー入力を待っている)になるまで、スレッドの実行が一時停止されます。これにより、スナップショットの作成を続行する前にブラウザの読み込みが完了するはずです。

次のコードのようなもの:

//start the web browser 
System.Diagnostics.Process proc = System.Diagnostics.Process.Start("iexplore.exe"); 

//wait for it to completely finish loading 
proc.WaitForInputIdle(); 

//take your screenshot, or whatever 
//... 
+0

ええ、プロセスが始まるとすぐに理想状態に変わります。 – bynx

+0

待ち時間をミリ秒単位で指定してみてください。 'proc.WaitForInputIdle(3000);' –

+0

そうではありません。実際に私のプロジェクト(webfonts.com)では、私はブラウザを開き、URLを入力してスナップショットを撮るウィンドウアプリエーションを作ったが、特定のブラウザ(firefox、opera、ieなど)のページを知る必要があるスナップショットをとることができるようにするかどうかを決定します。インターネットが遅すぎる場合でも、アプリケーションはそのブラウザのページが読み込まれた後にスナップショットを取る必要がありますが、私のコードはWindowsアプリケーションのためにロードされた天気を知ることができません。 – bynx

関連する問題