我在“BringWindowToTop”和“ShowWindow”中遇到了一个问题,这个问题在某些应用程序中出现,但不是全部。
问题是,如果我的应用程序被最小化到任务栏,并且当我逐个打开应用程序时,它们都会打开,除了Outlook。
在Outlook的情况下,我发现使用GetWindowPlacement dll,它返回x,y和amp;高度,宽度0值。
在Outlook中,如果我的应用程序处于还原模式/最大化模式,则process.MainWindowHandle具有不同的值,而处于最小化模式时,MainWindowHandle具有不同的值。
以下是代码:
foreach (var process in System.Diagnostics.Process.GetProcessesByName("outlook"))
{
ForceForegroundWindow1(process.MainWindowHandle, 2);
}
private static void ForceForegroundWindow1(IntPtr hWnd, int Status)
{
uint foreThread = GetWindowThreadProcessId(GetForegroundWindow(), IntPtr.Zero);
uint appThread = GetCurrentThreadId();
int SW_SHOW = 5;
if (Status == 0)
SW_SHOW = 3;
else if (Status == 2)
SW_SHOW = 9;
//SW_SHOW = 1;
const int SW_RESTORE = 9;
if (foreThread != appThread)
{
AttachThreadInput(foreThread, appThread, true);
BringWindowToTop(hWnd);
ShowWindow(hWnd, SW_SHOW);
// ShowWindowAsync(hWnd, SW_RESTORE);
AttachThreadInput(foreThread, appThread, false);
}
else
{
BringWindowToTop(hWnd);
ShowWindow(hWnd, SW_SHOW);
// ShowWindowAsync(hWnd, SW_RESTORE);
}
}
你能帮我把所有应用程序的窗口都放在最上面吗?