2012-07-16 25 views
1

我有我需要做下面的.. 啓動一個進程(有一些參數),發現了一些問題困擾我了幾天..使用C#採取的Opera Mobile模擬器截圖

窗口的過程中,拍攝該窗口的圖片,並殺死進程 ,我需要重複此操作X次。

我可以啓動進程,使用user32:查找其主要句柄,獲取窗口大小,所以我知道圖像的大小,將窗口位置設置爲0,0,並將其設置爲topMost,並使用copyFromScreen metod來捕獲該圖像。從0,0到窗口的大小..

所以它看起來一切正常,但有一個問題,我解決不了..

當過程開始時,我注意到,使用setWindowPos原生功能,一段時間後要經過,所以我使用Thread.sleep(x秒),但 那個時間是不同的每個系統..這就是問題..我必須知道在每個系統上延遲多長時間..我不能讓大不切實際的延遲,因爲該過程重複數百次..而每毫秒是非常重要的,

請如果你有一些解決方案,我會很高興地聽到..

該過程是Opera手機模擬器.. 其他解決方案是使用sendMessage,並更改網址,而不是啓動過程中反覆..和 我會等一下,但那也行不通.. 使用Spy ++我嘗試查找有關該過程的詳細信息,如className ..並且它顯示無效窗口.. 因此我可能無法使用sendMessage ..

回答

0

瀏覽器不是爲這種用法而設計的。如果您想要可靠地知道某個瀏覽器何時準備好呈現新頁面並想要獲取結果,請嘗試將其實際集成到瀏覽器的渲染引擎/內核中的內容。

有關完整的框架,請參見http://phantomjs.org/對於自己的解決方案 - 嘗試直接在應用程序中嵌入瀏覽器小部件,而不是與另一個進程交互。我相信.net有它的正確控制。這樣您就可以直接與相關事件掛鉤,而不用猜測正確的延遲。