Frage

Ein Fenster zeigt, ist nicht in der Taskleiste, nur in der Taskleiste. Wie kann ich es machen, wie auch in der Taskleiste angezeigt?

Ich habe versucht, den folgenden Code, aber es hatte keine Wirkung:

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

Und das ist nicht meine Art! Ich erhalte den Griff von Process.GetProcessesByName und ich weiß nicht, wie Eigenschaften der Form-Klasse zuzugreifen:

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

pMainWindow = someProcess.MainWindowHandle;
War es hilfreich?

Lösung

In der folgenden scheint den Trick zu tun. Wenn Sie verstecken und wieder aufführen das Fenster nach dem Aufruf es SetWindowLong zeigt dann in der Taskleiste.

Ich bin zu kämpfen, einen Weg zu finden, es aus der Taskleiste zu entfernen, sobald das Fenster minimiert wird ...

[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);      
}

Andere Tipps

Pass WS_EX_APPWINDOW statt WS_EX_TOOLWINDOW. Aus die docs :

WS_EX_APPWINDOW: Sorgt für ein Top-Level-Fenster auf die Taskleiste, wenn das Fenster sichtbar ist.

WS_EX_TOOLWINDOW: ... Ein Tool-Fenster in der Taskleiste oder im Dialog nicht erscheint, das angezeigt wird, wenn der Benutzer ALT + TAB drückt ...

Stellen Sie die .ShowInTaskbar Eigenschaft des Formulars auf true gesetzt.

Können Sie werfen das Objekt zurück Process.GetProcessesByName () als eine Form, und stellen Sie seine .ShowInTaskbar Eigenschaft?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top