当前位置: 代码迷 >> VB Dotnet >> GDI+绘制非客户区区域解决办法
  详细解决方案

GDI+绘制非客户区区域解决办法

热度:410   发布时间:2016-04-25 02:24:01.0
GDI+绘制非客户区区域
其他进程的,类似SPY++的高亮显示窗口.
如果以目标窗口句柄为目标进行绘制高亮框,发现很多标准窗口不能进行高亮显示,而部分非标准窗口可以,例如qq窗口,和vs2012的窗口都可以进行高亮显示.

为什么不能像程序自身绘制一样,在其他进程的标准窗口上的非客户区域进行绘制?

如果不用桌面句柄进行全屏绘制高亮框还有什么方案?

因为不用目标窗口句柄就没法判断是否能看见(即使能看见要遍历整个窗口列表,然后判断z轴什么的,麻烦,运算量还大.),注意是能看见不是visable=true,因为在后台被前面窗口挡住是看不见的,这样高亮后就看不见什么(应该是这样的).显示出来一半就只能看到亮的一半.

这里想改进spy这部分不足.大家有什么好的意见

最好的办法就是解决怎么在其他进程上绘制窗体的高亮框(父窗体的框,并非子控件的,子控件的都能绘制).

刚才看了下,跟win7的Aero主题有关系,不能在Aero主题的标准窗口的非客户区上进行绘制.

这个问题谁能解决?如果不用桌面句柄来在桌面上进行绘制的话.
------解决方案--------------------
可否换个思路,不是绘制一个方框,而是显示一个窗口:自己弄一个窗口,调用UpdateLayeredWindow绘制精美的外框(http://rohna.w.blog.163.com/blog/static/145741652009023534832/),不响应输入(弄成"有影无形"的样式,http://blog.csdn.net/jinjazz/article/details/2635180)设置为目标窗口的子窗口,并显示在指定的位置。
  相关解决方案