Функция ShowWindow
больше не работает так, как было объявлено, и, скорее всего, это связано с ограничениями "кражи фокуса", которые я обошел стороной после того, как изменил параметр реестра ForegroundLockTimeout
. Несмотря на то, что я установил его на 0 везде в Реестре, мои звонки все равно не выполняются.
Я пытаюсь использовать ShowWindow, чтобы вытащить некоторые программы из SysTray, скрывающиеся с помощью сочетаний клавиш. Я связал некоторые приложения на C # с этими горячими клавишами. Например, я использую это, чтобы вытащить Total Commander (поскольку его стандартная функциональность нарушена):
//Win32API.ShowWindow((IntPtr)hwndTC, Win32API.ShowWindowCommand.ShowDefault);
Win32API.ShowWindow((IntPtr)hwndTC, Win32API.ShowWindowCommand.ShowMaximized);
//Win32API.ShowWindow((IntPtr)hwndTC, Win32API.ShowWindowCommand.Maximize);
//Win32API.SetWindowPos(hwndTC, Win32API.HWND_TOPMOST, 0, 0, 0, 0,
// Win32API.SWP_NOSIZE | Win32API.SWP_NOMOVE);
//Win32API.SetWindowPos(hwndTC, Win32API.HWND_NOTOPMOST, 0, 0, 0, 0,
// Win32API.SWP_NOSIZE | Win32API.SWP_NOMOVE);
Win32API.SetWindowPos(hwndTC, Win32API.HWND_TOP, 0, 0, 0, 0,
Win32API.SWP_NOSIZE | Win32API.SWP_NOMOVE | Win32API.SWP_SHOWWINDOW);
Win32API.SetForegroundWindow(hwndTC);
Там много комментированного кода, потому что я все перепробовал. В Windows XP это прекрасно работало с простым вызовом ShowWindow. На Windows 7 это беспорядок. Он ведет себя хаотично и редко работает.
При работе от имени администратора, он вроде работает. За исключением того, что окно, которое я пытаюсь показать, начнет мигать на панели задач вместо того, чтобы отображаться. Полная тайна.