如何使窗口出现在任务栏中?

任务栏中未显示窗口,仅显示在系统托盘中。 我怎样才能让它出现在任务栏中?

我尝试了以下代码,但它没有效果:

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

而且,这不是我的forms! 我从Process.GetProcessesByName获取句柄,我不知道如何访问Form类的属性:

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

以下似乎可以解决问题。 如果在调用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); } 

传递WS_EX_APPWINDOW而不是WS_EX_TOOLWINDOW 。 来自文档 :

WS_EX_APPWINDOW :当窗口可见时,强制顶层窗口进入任务栏。

WS_EX_TOOLWINDOW :…当用户按下ALT + TAB时,工具窗口不会出现在任务栏或对话框中…

将窗体的.ShowInTaskbar属性设置为true。

你可以将对象返回Process.GetProcessesByName()作为一个表单,然后设置它的.ShowInTaskbar属性吗?