正如 Damien 所说,由于用户拥有浏览器,而不是您的应用程序,因此没有完全可靠的方法可以做到这一点。您的代码不起作用,因为您尝试像在 Google 上那样使用通配符 (*),但这在这里不起作用。GetProcessesByName
字面上是在寻找一个名为*iexplorer.*
. 您可以通过在该行下方放置一个断点来确认这一点,并将鼠标悬停在 上processList
,它是一个空数组。改变它来iexplore
解决这个问题。
一些经过测试和工作的代码如下:
using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
namespace ConsoleApplication1
{
class Program
{
[DllImport("user32.dll")]
static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
static void Main()
{
var processes = Process.GetProcessesByName("iexplore");
foreach (var process in processes)
{
ShowWindow(process.MainWindowHandle, 2);
}
}
}
}