我正在编写一个屏幕捕捉工具,这个工具可以对各种应用程序中的各种窗口进行捕捉,捕捉结果存成bitmap。有的窗口有滚动条,因此我必须给这个窗口发送WM_HSCROLL或者WM_VSCROLL消息来滚动窗口,才能捕捉到所有的窗口内容。因为必须等窗口绘制完备后我的程序才可以启动捕捉,因此我必须知道这些窗口何时绘制完毕了。这些窗口不是我自己应用程序产生的,我不清楚他们何时绘制完毕了。我现在用的方法是给窗口发送完WM_HSCROLL或者WM_VSCROLL消息后等待一个固定时间(比如1秒钟)再去捕捉窗口内容。可是这个方法有问题,因为有的窗口需要的绘制时间很长,1秒钟根本不够!如果我此时去捕捉,我取到的内容就是错误的,因此必须等待该窗口绘制完成。而且设一个固定的等待时间,对于一些绘制很快的窗口来说,也很费时间。我觉得设定一个固定的等待时间不是一个很好的方法。请问,是否有方法能确切知道何时一个窗口绘制结束了???(注意:这个窗口是其它应用程序绘制的,不是自己应用程序绘制的)
1、在“给这个窗口发送WM_HSCROLL或者WM_VSCROLL消息”完后,继续发消息,比如说“WM_XXX”。
2、窗口在接收“WM_HSCROLL或者WM_VSCROLL消息”后,去绘制窗口了。
3、这时“WM_XXX”应该还留在消息队列里。
4、定时去查看消息队列。一旦发现“WM_XXX”没有了。那么应该是绘制完了。
胡思乱想。^_^
www.codeproject.com
SPY能打出所有被监视窗口的消息,我想应该是这么弄的。怎么样,能给点分嘛!哈哈!我要做这个东东就会这么做。spy好象有源码。好久不折腾忘记了,
你查看看吧。