怎么自动捕抓窗口(类似QQ截图)
第一。没用过QQ自带的截图的去用用,在聊天窗口中间,上文本框与下文本框之间的工具栏里,有一个剪刀图案的就是截图。估计都用过了。有没有发现,如果在截图的时候,将鼠标指向某一个位置,那么截图的窗口就会框选鼠标当前指着的那个窗口。而且不仅是能看到的窗口,连任务栏上的不同区域(组成任务栏的特殊形态的窗口)也能被选上,这种功能是怎么做的?
第二。怎么拿到任务栏托盘区(通知区)的那个“窗口”的句柄,我用网上的一个句柄查看器,就有像问题一里的功能,这个软件取到了通知区的类名,标题,句柄等,但是我在VB里用类名和标题通过FindWindow去搜索,却没有找到(返回0),为什么?
[解决办法]
EnumWindows就能得到所有顶级窗口的句柄啊.
有了句柄就啥都能干了呀,比如要像QQ截图一样实现鼠标走到哪就高亮哪个区域,那就:
一,在捕捉整屏图像前先用EnumWindows得到所有顶级窗口句柄以及其所占区域(GetWindowRect)并保存;
二,捕捉整屏图象,显示到一个自己的全屏顶级窗口里作为捕捉目标;
三,判断鼠标在这个窗口中的坐标,并遍历第一步的区域列表,发现在哪个区域内就按这个区域的四个顶点画个框框....
至于第二个问题,不知道你是不是按"TrayNotifyWnd"这个类名去找的?直接去找貌似是找不到的,要先找到整个任务栏句柄("Shell_TrayWnd"),再找到TrayNotifyWnd.
具体的结构使用SPY++看看就知道了.