📄 subject_52727.htm
字号:
<p>
序号:52727 发表者:Zerg 发表日期:2003-09-13 20:16:53
<br>主题:$如何截获“桌面刷新消息”,写了一个桌面图标透明的程序(有代码),但桌面刷新后就又要运行程序,不爽。
<br>内容:$如何截获“桌面刷新消息”,写了一个桌面图标透明的程序(有代码),但桌面刷新后就又要运行程序,不爽。<BR><BR>估计用系统钩子搞吧。 <BR><BR>有高手告诉一下吧!<BR><BR>谢谢!<BR><BR><BR>/*本菜鸟一直想搞个和像“Windows优化大师”一样的桌面图标透明程序。<BR>*<BR>*由于没有头绪,就在晚上乱搜一番。找到一些程序,它们的GDI.DLL都调用UnrealizeObject。<BR>*<BR>*~◎搞不懂~~~@@@<BR>*<BR>*后来找到一用VB6写的源码,还好我看过几天VB6的书,虽然不会用,但源码还看懂。<BR>*<BR>*于是改为以下“自己认的”最简代码。<BR>*<BR>*不怕大家笑话,我还没全看懂!<BR>*<BR>*我不明白程序中FindWindow和FindWindowEx的作用,能否讲一下。<BR>*<BR>*另外0xFFFFFFFF有 8 个 ‘F’是不是由于16位色的原因??<BR>*/<BR><BR>#define _WIN32_WINNT 0x0500<BR>#include <windows.h><BR>#include <commctrl.h><BR><BR>int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,PSTR szCmdLine, int iCmdShow)<BR>{ <BR> HWND hWindow;<BR> hWindow = FindWindow("Progman", "Program Manager");<BR> hWindow = FindWindowEx(hWindow, 0, "SHELLDLL_DefView", "");<BR> hWindow = FindWindowEx(hWindow, 0, "SysListView32", "");<BR> SendMessage(hWindow, LVM_SETTEXTBKCOLOR, 0, 0xFFFFFFFF);<BR> //图标文字旁边的背景0xFFFFFFFF == 透明<BR> SendMessage( hWindow, LVM_REDRAWITEMS, 0, SendMessage(hWindow, LVM_GETITEMCOUNT, 0, 0));<BR> return 0;<BR>}<BR>
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:微笑的撒旦 回复日期:2003-09-13 23:44:11
<br>内容:Hook LVM_SETTEXTBKCOLOR 消息,注意不要让消息陷入循环。<BR><BR>"我不明白程序中FindWindow和FindWindowEx的作用,能否讲一下。"<BR>查MSDN!<BR><BR>0xFFFFFFFF就是-1,只是一个数字。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:Zerg 回复日期:2003-09-14 12:44:54
<br>内容:不是不明白"FindWindow和FindWindowEx的作用"是不明白他们的函数参数为什么是<BR><BR>“Progman", "Program Manager <BR><BR>"SHELLDLL_DefView", <BR><BR>"SysListView32",
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:微笑的撒旦 回复日期:2003-09-14 22:45:28
<br>内容:参数的具体意义你可以查看MSDN。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:Zerg 回复日期:2003-09-14 22:56:03
<br>内容:在吗?<BR><BR>谢谢了!<BR><BR>作Hook LVM_SETTEXTBKCOLOR 没钩住..<BR><BR>能帮忙搞一下吗?<BR><BR>LRESULT CALLBACK ShellProc(int code,WPARAM wParam,LPARAM lParam)<BR>{<BR>switch (WPARAM ) <BR>{ <BR>case LVM_SETTEXTBKCOLOR:<BR> hWindow = FindWindow("Progman", "Program Manager");<BR> hWindow = FindWindowEx(hWindow, 0, "SHELLDLL_DefView", "");<BR> hWindow = FindWindowEx(hWindow, 0, "SysListView32", "");<BR> SendMessage(hWindow, LVM_SETTEXTBKCOLOR, 0, 0xffffffff); <BR> // Turn background to transparent <BR> InvalidateRect(NULL, NULL, TRUE); // Repaint<BR> break;<BR> }<BR>return CallNextHookEx(NULL, code, wParam, lParam);<BR>}
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:微笑的撒旦 回复日期:2003-09-15 11:52:00
<br>内容:使用CallWndProc
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:Zerg 回复日期:2003-09-15 15:56:13
<br>内容:用CallWndProc 修改上面的代码,会出现严重错误.....<BR><BR>所有用HOOK的程序都出错,还要重启Win2000....<BR><BR><BR>老兄要是知道怎么写,就写一个吧....
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:微笑的撒旦 回复日期:2003-09-15 16:05:13
<br>内容:你把工程打包一下传上来或是发给我。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:Zerg 回复日期:2003-09-15 16:14:05
<br>内容:就几行代码,,,放这了......<BR><BR>#define _WIN32_WINNT 0x0500<BR>#include <windows.h><BR>#include <commctrl.h><BR>HWND hWindow;<BR>HHOOK g_Hook = NULL;<BR>LRESULT CALLBACK ShellProc(int code,WPARAM wParam,LPARAM lParam);<BR><BR>int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,<BR> PSTR szCmdLine, int iCmdShow)<BR>{ <BR> g_Hook = SetWindowsHookEx(WH_SHELL,ShellProc,hInstance,0);<BR><BR>MessageBox (NULL,TEXT("想截获刷新消息,使桌面图标文字透明"),TEXT("桌面图标文字透明"),MB_OK);<BR>/*<BR> hWindow = FindWindow("Progman", "Program Manager");<BR> hWindow = FindWindowEx(hWindow, 0, "SHELLDLL_DefView", "");<BR> hWindow = FindWindowEx(hWindow, 0, "SysListView32", "");<BR> <BR>//SendMessage(hWindow, LVM_SETTEXTBKCOLOR, 0, 0xFFFFFFFF);<BR>//SendMessage( hWindow, LVM_REDRAWITEMS, 0, SendMessage(hWindow, LVM_GETITEMCOUNT, 0, 0));<BR> SendMessage(hWindow, LVM_SETTEXTBKCOLOR, 0, 0xffffffff); <BR> // Turn background to transparent <BR> InvalidateRect(NULL, NULL, TRUE); // Repaint<BR>*/ <BR> UnhookWindowsHookEx(g_Hook);<BR><BR> return 0;<BR>}<BR><BR>LRESULT CALLBACK ShellProc(int code,WPARAM wParam,LPARAM lParam)<BR>{<BR> switch (code) <BR> { <BR> case LVM_SETTEXTBKCOLOR:<BR> MessageBox (NULL,TEXT("Windows 2000"),TEXT("messagebox"),MB_CANCELTRYCONTINUE);<BR> hWindow = FindWindow("Progman", "Program Manager");<BR> hWindow = FindWindowEx(hWindow, 0, "SHELLDLL_DefView", "");<BR> hWindow = FindWindowEx(hWindow, 0, "SysListView32", "");<BR> SendMessage(hWindow, LVM_SETTEXTBKCOLOR, 0, 0xffffffff); <BR> // Turn background to transparent <BR> InvalidateRect(NULL, NULL, TRUE); // Repaint<BR><BR> break;<BR> }<BR> return CallNextHookEx(NULL, code, wParam, lParam);<BR>}<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:Zerg 回复日期:2003-09-15 16:18:09
<br>内容:传上来了.....<BR><BR>谢谢改一下....
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:微笑的撒旦 回复日期:2003-09-16 09:31:21
<br>内容:中文名字不是很好,我这边打开的时候vc就会crash掉。<BR><BR>关于使用HOOK,你可以查看MSDN或是Windows 95程序设计指南,在侯捷的网站有下载。<BR><BR>这里,你需要把hook代码写在一个dll中。因为你要hook的是一个remote thread。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:Zerg 回复日期:2003-09-17 12:45:13
<br>内容:"中文名字不是很好,我这边打开的时候vc就会crash掉。"<BR><BR>我用的是英文版VC++ 6,没事啊....<BR><BR>用remote thread hook ,会影响系统速度吧..<BR><BR>Windows 95程序设计指南 等老书正在看...<BR><BR>谢谢!!!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -