Window
タグでメインウィンドウがフルスクリーンに設定されたWindowState="Maximized"
のWPFアプリケーションがあります。このアプリケーションでは、WPFアプリケーションの上にあるPowerPointをフォアグラウンドで開くという意図で、Office Interopライブラリを通じてPowerPointを開いています。しかし、PowerPointは一貫してフォアグラウンドに来ていません(特にWindows 7マシン)。このような場合は、Windowsのタスクバーを開き、PowerPointのアイコンをクリックするためにWindowsキーを押す必要があります。WPF XAMLウィンドウが最大化されているときに別のアプリケーションをフォアグラウンドにする
私は(ここでは最後のものをいくつかのコードがあります)などのWin32 APIからSetForegroundWindow()
を使用するなど、いくつかのこと、パワーポイント相互運用ライブラリで.Activate()
機能、およびAutomationElement
クラスを試してみた:
Process process = System.Diagnostics.Process.GetProcessesByName("POWERPNT").FirstOrDefault();
AutomationElement element = AutomationElement.FromHandle(process.MainWindowHandle);
if (element != null)
{
element.SetFocus();
}
しかし、これらのどれも一貫してPowerPointを前面に持っていないようです。誰もがなぜこの動作が発生しているのか、フォアグラウンドでPowerPointを取得するのが最善の理由を知っていますか?
http://stackoverflow.com/questions/6228089/how-do-i-bring-an-unmanaged-application-window-to-front-and -make-it-the-active – Nathan
私はその答えを見て、 'SetForegroundWindow()'関数を使用しましたが、残念ながらそれはうまくいかないようです。 'WindowState'が' Maximized'に設定されていないときに動作するようです。 – pinhead