在任务栏中没有显示窗口,仅在系统托盘中显示。如何使它也显示在任务栏中?

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

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;

最佳答案

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

关于c# - 如何使窗口出现在任务栏中?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1462504/

10-10 21:57