gpt4 book ai didi

c# - SetForegroundWindow 不适用于最小化进程

转载 作者:行者123 更新时间:2023-12-02 18:18:35 24 4
gpt4 key购买 nike

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

这是代码片段:

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!");
}
}
}

最佳答案

您需要调用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有一些关于 DllImport 以及在 C# 中使用该函数的示例。

关于c# - SetForegroundWindow 不适用于最小化进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27449298/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com