C# 如何使窗口显示在任务栏中?

C# 如何使窗口显示在任务栏中?,c#,.net,taskbar,C#,.net,Taskbar,任务栏中不显示窗口,仅显示在系统托盘中。我怎样才能让它也显示在任务栏上 我尝试了以下代码,但没有效果: int windowStyle = GetWindowLong(pMainWindow, GWL_EXSTYLE); SetWindowLong(pMainWindow, GWL_EXSTYLE, windowStyle & WS_EX_TOOLWINDOW); 而且,这不是我的表格!我正在从Process.getProcessByName获取句柄,但我不知道如何访问Form类的属性

任务栏中不显示窗口,仅显示在系统托盘中。我怎样才能让它也显示在任务栏上

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

int windowStyle = GetWindowLong(pMainWindow, GWL_EXSTYLE);
SetWindowLong(pMainWindow, GWL_EXSTYLE, windowStyle & WS_EX_TOOLWINDOW);
而且,这不是我的表格!我正在从Process.getProcessByName获取句柄,但我不知道如何访问Form类的属性:

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

pMainWindow = someProcess.MainWindowHandle;

将表单的.ShowInTaskbar属性设置为true。

能否将对象返回的Process.getProcessByName()转换为表单,然后设置其.ShowInTaskbar属性?

传递
WS_EX_APPWINDOW
而不是
WS_EX_TOOLWINDOW
。发件人:

WS_EX_APPWINDOW
:当窗口可见时,强制在任务栏上显示顶级窗口


WS_EX_tool window
:…工具窗口不会出现在任务栏中,也不会出现在用户按ALT+TAB键时出现的对话框中…

以下操作似乎可以实现此目的。如果在调用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);      
}

对不起,我没有给你所有的信息。这不是我的表格类似于。。。对象O=新对象();O=Process.getProcessByName();((表格)O)ShowInTaskBar=true;非常感谢。尝试了两种SetWindowLong(pMainWindow、GWL_EXSTYLE、WindowsStyle和WS_EX_APPWINDOW);和SetWindowLong(pMainWindow、GWL_EXSTYLE、WindowsStyle和WS_EX_APPWINDOW);但是没有任何结果。在谷歌搜索时,我发现“仅仅设置扩展窗口样式本身是不够的——它只能在窗口初始化时正常工作”,也许这是一个问题……解决方案是让app window成为我们想要编辑的窗口的父窗口。但我的应用程序中没有窗口,它是一个dll!酷,没问题。如果要从系统任务栏(又称通知图标)最大化窗口,请记住,当用户最小化窗口时,他们希望将其从任务栏中删除。正如我在回答中所说,我无法让这一点发挥作用……我认为这有点错误,例如,假设窗口是最上面的窗口,这将清除
WS_EX_TOPMOST
标志。您还需要使用
GetWindowLong
|