Huu*_*b S 2 c# pinvoke winapi minimized
在此主题上找不到任何好的答案,因此也许有人可以帮我。我正在制作一个小型个人程序,希望将某个应用程序放在前台。它已经可以工作,但是有一个小问题。当过程最小化时,我的代码不起作用。该过程不会像未最小化时那样在前台显示。
这是代码片段:
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!");
}
}
}
Run Code Online (Sandbox Code Playgroud)
您需要先调用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);
}
Run Code Online (Sandbox Code Playgroud)
PInvoke.net-ShowWindowDllImport在C#中有一些使用该函数的示例。