Как заставить окно появиться в панели задач? - PullRequest
3 голосов
/ 23 сентября 2009

Окно не отображается на панели задач, только в системном трее. Как сделать так, чтобы оно отображалось на панели задач?

Я попробовал следующий код, но он не дал эффекта:

int windowStyle = GetWindowLong(pMainWindow, GWL_EXSTYLE);
SetWindowLong(pMainWindow, GWL_EXSTYLE, windowStyle & WS_EX_TOOLWINDOW);

И это НЕ моя форма! Я получаю дескриптор из Process.GetProcessesByName и не знаю, как получить доступ к свойствам класса Form:

Process[] processes = Process.GetProcessesByName("somename");
someProcess = processes[0];

pMainWindow = someProcess.MainWindowHandle;

Ответы [ 4 ]

2 голосов
/ 23 сентября 2009

Следующее, кажется, делает трюк. Если после вызова SetWindowLong вы скрываете и повторно отображаете окно, оно отображается на панели задач.

Я изо всех сил пытаюсь найти способ удалить его с панели задач, когда окно свернуто ...

[DllImport("User32.Dll")]                
public static extern int SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong);

[DllImport("user32.dll")]
static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);

private const int SW_HIDE = 0x00;
private const int SW_SHOW = 0x05;

private const int WS_EX_APPWINDOW = 0x40000;
private const int GWL_EXSTYLE = -0x14;

private void ShowWindowInTaskbar(IntPtr pMainWindow)
{                       
    SetWindowLong(pMainWindow, GWL_EXSTYLE, WS_EX_APPWINDOW);

    ShowWindow(pMainWindow, SW_HIDE);
    ShowWindow(pMainWindow, SW_SHOW);      
}
2 голосов
/ 23 сентября 2009

Pass WS_EX_APPWINDOW вместо WS_EX_TOOLWINDOW. От документы :

WS_EX_APPWINDOW: Вызывает окно верхнего уровня на панель задач, когда окно видно.

WS_EX_TOOLWINDOW: ... Окно инструментов не появляется на панели задач или в диалоговом окне, которое появляется, когда пользователь нажимает ALT + TAB ...

0 голосов
/ 23 сентября 2009

Можете ли вы привести объект, возвращенный Process.GetProcessesByName () в виде формы, а затем установить его свойство .ShowInTaskbar?

0 голосов
/ 23 сентября 2009

Установите для свойства .ShowInTaskbar формы значение true.

...