2012-07-16 54 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有它的正确控制。这样您就可以直接与相关事件挂钩,而不用猜测正确的延迟。