【发布时间】:2015-07-09 15:17:17
【问题描述】:
在我的班级中名列前茅:
[DllImport("USER32.DLL")]
public static extern bool SetForegroundWindow(IntPtr hWnd);
[DllImport("User32.dll")]
private static extern bool ShowWindow(IntPtr handle, int nCmdShow);
private const int SW_SHOWMAXIMIZED = 3;
然后在一个方法中:
public static void BringToFront(IntPtr handle)
{
if (handle == IntPtr.Zero)
return;
// Maximize window
ShowWindow(handle, SW_SHOWMAXIMIZED);
SetForegroundWindow(handle);
}
但我不希望它最大化,而是正常大小。
编辑
这是有效的。
在表格1中:
Process[] processes = Process.GetProcessesByName(processName);
SetProcessWindow.BringToFront(processes[0].Id);
SetProcessWindow.CenterProcessWindow(processes[0].Id);
在课堂上:
public static void BringToFront(int processId)
{
Process process = Process.GetProcessById(processId);
IntPtr handle = process.MainWindowHandle;
if (handle == IntPtr.Zero)
return;
ShowWindow(handle, SW_SHOWNORMAL);
SetForegroundWindow(handle);
}
【问题讨论】:
-
你可以使用 SW_SHOWNORMAL = 1;而不是 SW_SHOWMAXIMIZED
-
试过 SW_SHOWNORMAL = 1;它没有显示任何东西。根本没有把窗户带到前面。还尝试了 2 没有 3 最大化也 4 最大化。奇怪的是 SW_SHOWNORMAL = 1;不起作用。
-
也许你可以在这里找到有用的东西stackoverflow.com/questions/13468331/…