从进程中隐藏TaskBar(c#)

时间:2011-10-03 08:29:10

标签: c# taskbar

在我的应用程序中,我希望在我的进程启动时隐藏窗口TaskBar和StartMenuButton,并希望在退出时恢复它。

我可以这样做:

IntPtr  startButtonHwnd = FindWindowEx(IntPtr.Zero, IntPtr.Zero, (IntPtr)0xC017, null);
IntPtr  taskBarHwnd = FindWindow("Shell_TrayWnd", "");

ShowWindow(taskBarHwnd, 0);
ShowWindow(startButtonHwnd, 0);

这对我来说很好。 现在我看到一个案例,如果我的进程由于某种原因而崩溃或被用户强行杀死,我将无法恢复TaskBar。

是否有任何方法可以为这两个(崩溃和死亡)案件恢复它?

我还在与Windows Gadget进行交互,并且在我的应用程序中单击某个按钮时显示了一个Gadget窗口,因此我无法使用Form.TopMost = true和& Screen.PrimaryScreen.Bounds

谢谢,

维克拉姆

1 个答案:

答案 0 :(得分:2)

通过将恢复代码放在全局异常处理程序中,您可以满足大多数崩溃的需要。您可以通过设置unhandled exception handler

来执行此操作
  AppDomain currentDomain = AppDomain.CurrentDomain;
  currentDomain.UnhandledException += new UnhandledExceptionEventHandler(MyHandler);


static void MyHandler(object sender, UnhandledExceptionEventArgs args)
{
    ShowWindow(taskBarHwnd, 0);
    ShowWindow(startButtonHwnd, 0);
}

这不符合程序被杀的情况。