SetForegroundWindow 不适用于最小化进程[重复]

2024-04-25

找不到关于这个主题的任何好的答案,所以也许有人可以帮助我。我正在制作一个小型个人程序,我想将某个应用程序带到前台。它已经可以工作了,但是有一个小问题。当进程最小化时,我的代码将无法工作。该进程不会像未最小化时那样显示在前台。

这是代码片段:

public partial class Form1 : Form
{
    [DllImport("user32.dll")]
    static extern bool SetForegroundWindow(IntPtr hWnd);

    public Form1()
    {
       InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        System.Diagnostics.Process[] p
            = System.Diagnostics.Process.GetProcessesByName("Client");

        if (p.Length > 0)
        {
            SetForegroundWindow(p[0].MainWindowHandle);
        }
        else
        {
            MessageBox.Show("Window Not Found!");
        }
    }
}

你需要打电话橱窗展示 https://learn.microsoft.com/en-us/windows/desktop/api/winuser/nf-winuser-showwindow在尝试将其设置为前台窗口之前。

可能与SW_RESTORE:

 [DllImport("user32.dll")]
 [return: MarshalAs(UnmanagedType.Bool)]
 static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);

 if (p.Length > 0)
 {
   ShowWindow(p[0].MainWindowHandle, 9);
   SetForegroundWindow(p[0].MainWindowHandle);
 }

PInvoke.net - ShowWindow http://www.pinvoke.net/default.aspx/user32.showwindow有一些例子DllImport并在 C# 中使用该函数。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SetForegroundWindow 不适用于最小化进程[重复] 的相关文章

随机推荐