Скрытие панели задач от процесса (c #) - PullRequest
0 голосов
/ 03 октября 2011

В моем приложении я хочу скрыть окна TaskBar и StartMenuButton, когда мой процесс запущен, и хочу восстановить его, когда он завершится.

Я могу сделать это, используя:

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

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

и у меня это нормально работает. Теперь я вижу случай, когда, если мой процесс по какой-то причине потерпел крах или был принудительно убит пользователем, я не смогу восстановить панель задач.

Есть ли способ восстановить его для ДВУХ (аварийных и убитых) случаев?

Я также взаимодействую с гаджетом Windows и показываю окно гаджета при нажатии какой-либо кнопки в моем приложении, поэтому я не могу использовать такие свойства, как Form.TopMost = true & Screen.PrimaryScreen.Bounds

Спасибо

Викрам

1 Ответ

2 голосов
/ 03 октября 2011

Вы можете справиться с большинством сбоев, поместив код восстановления в глобальный обработчик исключений.Вы можете сделать это, настроив обработчик необработанных исключений

  AppDomain currentDomain = AppDomain.CurrentDomain;
  currentDomain.UnhandledException += new UnhandledExceptionEventHandler(MyHandler);


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

Это не поможет в случае, когда программа убита.

...