关于动态桌面
song_5007吧
全部回复
仅看楼主
level 10
song_5007 楼主
@a13075958573
我提供个思路
CPU占用极低
1.初始化DX,输出到SHELLDLL_DefView
2.设置桌面为纯色(128,128,64)
3.调用SetLayeredWindowAttributes使SysListView32的桌面背景透明。
重点:
4.GetCursorPos获取鼠标坐标,GetItemPosition历遍桌面图标获取位置,如果鼠标在图标外,给SysListView32赋予WS_EX_TRANSPARENT,如果在图标内,消去WS_EX_TRANSPARENT(用SetWindowLong)
好处:
不用重启explorer,不用HOOK,不用重绘,占用资源少。
弊端:
程序异常结束后壁纸无法恢复(处理方案:用另一进程管理)
需要提权。
以上仅是理论,你可以试试看。
2014年06月11日 03点06分 1
level 10
song_5007 楼主
4中可以添加Sleep(20)都没有问题
2014年06月11日 03点06分 2
level 3
很感谢你的建议,但是SetLayeredWindowAttributes只能使顶层窗体透明,SysListView32这种子窗体没办法透明,据我了解是这样吧?还是说有其他办法?
2014年06月11日 06点06分 3
有,窗口样式与0x80000或运算
2014年06月11日 06点06分
回复 song_5007 :SetWindowLong(hwnd, GWL_EXSTYLE, GetWindowLong(hwnd, GWL_EXSTYLE) | 0x80000); SetLayeredWindowAttributes(hwnd, 0x408080, 0, 1);
2014年06月11日 06点06分
我觉得其实就关键还是在透明的实现方式上,其他都是围绕透明进行修正,完善的
2014年06月11日 06点06分
回复 song_5007 :这样可以的话我去试试
2014年06月11日 06点06分
level 10
song_5007 楼主
@a13075958573
1.2.3是可以实现的
2014年06月11日 06点06分 4
图标阴影一关就完美了
2014年06月11日 06点06分
回复 song_5007 :最近有点忙,快期末考了,那个你说的第四点是用来实现什么功能的没看明白?
2014年06月11日 14点06分
回复 a13075958573 :期末加油考,考完在弄也来得及。我就等你了。
2014年06月11日 15点06分
回复 a13075958573 :内存注入加系统api
2014年06月11日 15点06分
level 3
http://blog.csdn.net/banketree/article/details/7973749
这个有没看过?好像酷狗的桌面就是根据这个改的
2014年06月12日 05点06分 5
看过了,本来我也是这么想的,但这货在win8上的运行效果不能直视
2014年06月12日 08点06分
回复 song_5007 :酷狗的桌面虽然效果好,但是占用挺高的有点难以取舍。。。。
2014年06月12日 09点06分
level 3
为什么你用
SetWindowLong(hwnd, GWL_EXSTYLE, GetWindowLong(hwnd, GWL_EXSTYLE) | 0x80000);成功。
我返回一直都是0,失败了。
难道win7不行?
或者是调用程序得在explorer的同一进程才能成功?
我之前就是因为不能用这个API给窗口添加透明属性才没这样实现的。。。
2014年06月13日 03点06分 6
试过进程提权了没有?getlasterror返回什么?我也没在win7试过
2014年06月13日 03点06分
level 3
主要是SetLayeredWindowAttributes(hwnd, 0x408080, 0, 1);
GetLastError()返回87,参数错误。
推断是SetWindowLong没设对,实际这个api,GetLastError()是0,没有提示出错。
我检查过SysListView32并没有增加扩展样式。
然后提权后也没发现有什么变化。。。
2014年06月13日 04点06分 7
[狂汗]我也没办法。。。我的win7装在机械盘里,启动要好几分钟。。
2014年06月13日 11点06分
找到原因了:Note Beginning with Windows 8, WS_EX_LAYERED can be used with child windows and top-level windows. Previous Windows versions support WS_EX_LAYERED only for top-level windows.(MSDN)
2014年06月13日 13点06分
回复 song_5007 :呵呵,果然是这样子郁闷死了。。。。。。
2014年06月13日 13点06分
回复 a13075958573 :有一种白高兴一场的空虚感。。。不过只少在你的提醒下发现酷狗相似的功能。。这下有新的研究的对象了
2014年06月13日 13点06分
1