读书人

怎么把winform放在桌面最底层要同时

发布时间: 2012-05-01 12:48:58 作者: rapoo

如何把winform放在桌面最底层,要同时支持xp和win7的。
像桌面日历那种效果,程序启动就嵌在桌面上,
我找到了一段代码,能支持xp,但不支持win7,

希望同时支持xp和win7的。

如果写个函数给我最好。谢谢

[解决办法]
没用过w7,所以给不了了。
你调试一下程序,也就是那几个api。应该可以用的。
[解决办法]

C# code
private IntPtr GetDesktopPtr() {    //http://blog.csdn.net/mkdym/article/details/7018318    // 情况一    IntPtr hwndWorkerW = IntPtr.Zero;    IntPtr hShellDefView = IntPtr.Zero;    IntPtr hwndDesktop = IntPtr.Zero;    IntPtr hProgMan = Win32.FindWindow("ProgMan", null);    if (hProgMan != IntPtr.Zero) {        hShellDefView = Win32.FindWindowEx(hProgMan, IntPtr.Zero, "SHELLDLL_DefView", null);        if (hShellDefView != IntPtr.Zero) {            hwndDesktop = Win32.FindWindowEx(hShellDefView, IntPtr.Zero, "SysListView32", null);        }    }    if (hwndDesktop != IntPtr.Zero) return hwndDesktop;    // 情况二    while (hwndDesktop == IntPtr.Zero) {//必须存在桌面窗口层次          hwndWorkerW = Win32.FindWindowEx(IntPtr.Zero, hwndWorkerW, "WorkerW", null);//获得WorkerW类的窗口          if (hwndWorkerW == IntPtr.Zero) break;//未知错误        hShellDefView = Win32.FindWindowEx(hwndWorkerW, IntPtr.Zero, "SysListView32", null);        if (hShellDefView == IntPtr.Zero) continue;        hwndDesktop = Win32.FindWindowEx(hShellDefView, IntPtr.Zero, "SysListView32", null);    }    return hwndDesktop;} 

读书人网 >C#

热点推荐