怎么把winform放在桌面最底层,要同时支持xp和win7的
如何把winform放在桌面最底层,要同时支持xp和win7的。
像桌面日历那种效果,程序启动就嵌在桌面上,
我找到了一段代码,能支持xp,但不支持win7,
希望同时支持xp和win7的。
如果写个函数给我最好。谢谢
------解决方案--------------------
没用过w7,所以给不了了。
你调试一下程序,也就是那几个api。应该可以用的。
------解决方案--------------------
像桌面日历那种效果,程序启动就嵌在桌面上,
我找到了一段代码,能支持xp,但不支持win7,
希望同时支持xp和win7的。
如果写个函数给我最好。谢谢
------解决方案--------------------
没用过w7,所以给不了了。
你调试一下程序,也就是那几个api。应该可以用的。
------解决方案--------------------
- C# code
private IntPtr GetDesktopPtr() { //http://blog.****.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; }