1

有问题困扰了我好几天。。

我需要执行以下操作..启动一个进程(带有一些参数),找到该进程的窗口,对该窗口拍照,然后终止该进程,我需要重复此操作 X 次..

我可以使用 user32 启动该过程:找到它的主句柄,获取窗口大小,所以我知道图像的大小,将窗口位置设置为 0,0,并将其设为 topMost,然后使用 copyFromScreen 方法捕获该图像..从0,0到窗口大小..

所以看起来一切都很好,但是有一个我无法解决的问题..

当进程启动时,我注意到要使用 setWindowPos 本机函数,应该经过一段时间,所以我使用 Thread.sleep(x seconds),但每个系统的时间都不同..这就是问题..我必须知道每个系统要延迟多长时间..我不能让不必要的大延迟,因为这个过程重复了数百次..每一毫秒都很重要,

请如果你有一些解决方案,我会很高兴听到..

该过程是opera mobile emulator ..其他解决方案是使用sendMessage,并更改url,而不是一遍又一遍地启动该过程..我会等待一次,但这也行不通..使用Spy ++我尝试找到有关该过程的详细信息,例如 className .. 它说无效窗口.. 所以我可能也不能使用 sendMessage ..

4

1 回答 1

0

浏览器不是为这种用途而设计的。如果您想可靠地知道某些浏览器何时准备好渲染新页面并想要获取结果,请尝试实际集成到浏览器渲染引擎/核心中的东西。

对于完整的框架,请参阅http://phantomjs.org/对于自己的解决方案 - 尝试将浏览器小部件直接嵌入到您的应用程序中,而不是与另一个进程交互。我确信.net 有正确的控制。通过这种方式,您可以直接挂钩相关事件,而不是猜测正确的延迟。

于 2012-07-16T14:37:23.543 回答