1

数日間気になる問題があります..

次のことを行う必要があります..プロセスを開始し(いくつかの引数を指定して)、プロセスのウィンドウを見つけ、そのウィンドウの写真を撮り、プロセスを強制終了します。この操作をX回繰り返す必要があります..

user32 を使用してプロセスを開始できます。そのメイン ハンドルを見つけ、ウィンドウ サイズを取得するので、画像のサイズがわかります。ウィンドウの位置を 0,0 に設定し、それを topMost にします。さらに copyFromScreen メソッドを使用してその画像をキャプチャします。 .. 0,0 からウィンドウのサイズまで..

すべてがうまくいっているように見えますが、解決できない問題が 1 つあります。

プロセスが開始されると、setWindowPos ネイティブ関数を使用するには時間がかかるので、Thread.sleep(x 秒) を使用しますが、その時間はシステムごとに異なります..そしてそれが問題です..私はしなければなりませんすべてのシステムでどれだけの遅延が発生するかを知っています..そして、プロセスが何百回も繰り返されるため、大きな不必要な遅延を許すことはできません..そしてミリ秒ごとが重要です.

何か解決策がありましたら、よろしくお願いします..

プロセスはオペラモバイルエミュレーターです..他の解決策は、プロセスを何度も開始する代わりに、sendMessageを使用してURLを変更することです..一度待ちますが、それも機能しません..Spy ++を使用してclassName ..のようなプロセスの詳細を見つけて、無効なウィンドウと表示されているので、おそらくsendMessageも使用できません..

4

1 に答える 1

0

ブラウザは、この種の使用のために設計されていません。ブラウザーが新しいページをレンダリングする準備ができていることを確実に知りたい場合、および結果を取得したい場合は、ブラウザーのレンダリング エンジン/コアに実際に統合するものを試してください。

完全なフレームワークについては、http://phantomjs.org/を参照してください。独自の解決策については、別のプロセスとのインターフェイスではなく、ブラウザ ウィジェットをアプリケーションに直接埋め込んでみてください。.net には適切なコントロールがあると確信しています。このようにして、適切な遅延を推測する代わりに、関連するイベントに直接フックできます。

于 2012-07-16T14:37:23.543 に答える