当躲在Vista和Windows 7的启动按钮(也被称为启动ORB)的任务栏中没有得到隐藏。我一直在寻找一个解决方案,这一点,我发现一个,但比需要的似乎更复杂。 这 CodeProject上的文章介绍(并包含代码),您枚举所有孩子一个解决方案在包含开始菜单中的进程的所有线程的窗口。

有没有人发现了一个简单的解决方案?

仅供参考。用于隐藏任务栏(不隐藏ORB)的代码如下。首先做必要的Win32进口和声明。

[DllImport("user32.dll")]
private static extern IntPtr FindWindow(string className, string windowText);

[DllImport("user32.dll")]
private static extern int ShowWindow(IntPtr hwnd, int command);


private const int SW_HIDE = 0;
private const int SW_SHOW = 1;

然后,在某处的方法,称它们与合适的参数

IntPtr hwndTaskBar = FindWindow("Shell_TrayWnd", "");
ShowWindow(this.hwndTaskBar, SW_HIDE);
有帮助吗?

解决方案

我能够放在一起,并不需要所有的线程枚举的解决方案。下面是有关部分。

如果声明FindWindowEx如下

[DllImport("user32.dll")]
private static extern IntPtr FindWindowEx(
       IntPtr parentHwnd,
       IntPtr childAfterHwnd,
       IntPtr className,
       string windowText);

您可以再访问窗口句柄开始天体是这样的:

IntPtr hwndOrb = FindWindowEx(IntPtr.Zero, IntPtr.Zero, (IntPtr)0xC017, null);

和禁用开始球这样的:

ShowWindow(hwndOrb, SW_HIDE);

该方法的关键是,我们使用IntPtr类型为可变的className,而不是在FindWindowEx功能的字符串。这使我们可以使用此功能,它接受一个ATOM类型,而不是一个string的部分。我能辨别使用的特定ATOM是从这篇文章0xC017隐藏Vista开始天体

希望这会简化版本可以帮助一些人。

更新: 我建立这个新的代码项目页记录这一过程。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top