wss1051 发表于 2015-5-17 14:07:52

xp和win7下"开始"菜单的区别及隐藏显示

  
  项目中程序都是全屏显示,在任务栏总显示在最前面,最先想到办法是任务栏自动隐藏,可在程序操作过程中任务栏经常跑出来,所以想把它彻底隐藏掉。通过api就可以解决了(我机器是xp),但拿到测试机(win7)下运行,任务栏是隐藏了,不足的是"开始"这个按钮还是显示的。
  
  用spy++反复查看比对,我得出如下结论:
  
  任务栏就像一个容器,里面有子容器,子容器里面又有子窗口,最后到单一个体。比较形象化的就是路过的树倒过来看。在xp下"开始"是作为任务栏子窗口存在的,隐藏任务栏后自己包括子子孙孙自然都隐藏了。可在win7下"开始"是相对任务栏独立存在的,也就是它们是一个级别的,所以隐藏任务栏,"开始"还在那显示着。
  
  知道这些就好办了,下面是完美隐藏显示解决办法。


View Code


1 using System;
2 using System.Windows.Forms;
3 using System.Runtime.InteropServices;
4
5 namespace demo
6 {
7   public partial class Form1 : Form
8   {
9         public Form1()
10         {
11             InitializeComponent();
12         }
13
14         
15         public extern static IntPtr FindWindow(string lpClassName, string lpWindowName);
16
17         
18         public static extern int ShowWindow(IntPtr hwnd, int show);
19
20         
21         public static extern IntPtr FindWindowEx(IntPtr parentHandle, IntPtr childAfter, string lclassName, string windowTitle);
22
23
24
25         const int SW_SHOW = 5 ;//显示
26         const int SW_HIDE = 0;//隐藏
27
28         private void Form1_Load(object sender, EventArgs e)
29         {
30             IntPtr taskbar = FindWindow("Shell_TrayWnd", null);
31             IntPtr start = FindWindowEx(IntPtr.Zero, IntPtr.Zero, "Button", null);
32             ShowWindow(taskbar, SW_HIDE);
33             ShowWindow(start, SW_HIDE);
34
35         }
36   }
37 }
  
页: [1]
查看完整版本: xp和win7下"开始"菜单的区别及隐藏显示