C#如何通过给定的进程ID最小化另一个应用程序?

时间:2016-09-12 20:09:36

标签: c#

我想通过进程ID最小化应用程序。我搜索了SO并找到了以下代码

private const int SW_MAXIMIZE = 3;
private const int SW_MINIMIZE = 6;
[DllImport("user32.dll", EntryPoint = "FindWindow")]
public static extern IntPtr FindWindowByCaption(IntPtr ZeroOnly, string lpWindowName);
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);

public void MinimizeWindow()
{
  IntPtr hwnd = FindWindowByCaption(IntPtr.Zero, "NotePad");
  ShowWindow(hwnd, SW_MINIMIZE);
}

但我不想通过标题找到窗口,因为应用的标题会发生变化。我有一个给定的进程ID来自另一个模块,该模块请求使用给定的进程ID最小化应用程序。

有这样的事吗?

  public static extern IntPtr FindWindowByProcess(IntPtr ZeroOnly, int lpProcessID);

或者如果没有,无论如何要四处走动?

1 个答案:

答案 0 :(得分:7)

只需使用Process类。

Process.GetProcessById(YourProcessID).MainWindowHandle