マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

「Windowを前面に出す」方法については、
過去に似た問い合わせを何回も受けているため纏めておきます。

技術的背景については、「ウィンドウ・システム」を参照のこと。

詳細

SetForegroundWindow?

ウィンドウの制御をプログラムから行う場合は、
SetForegroundWindow?のWin32 APIを使用できますが、
SetForegroundWindow?を使用する場合、以下の様な条件があるようです。

AttachThreadInput?

SetForegroundWindow?でアクティブにならない場合には、

参考

補足

この処理を「VIQとローカル入出力の統合」と言う。

AttachThreadInput? Win32 APIで、VIQを共有すれば、当該プロセスが、

「そのプロセスが最後の入力イベントを受け取った。」

ということになり、タスクバーを点滅させずに、ウインドウを最前面に出すことができる。

ただし、Windows標準の操作性では無いため、
こちらも基本的にはあまり実装しない方が良い。

プラットフォームによる差異

Vista以降(SetWindowPos?

Vista以降ではSetWindowPos?のWin32 APIを使用できます。

Webからだと(ActiveX)

前述のWin32 APIを使用する必要があるため、IEの場合、
ActiveXを使用する必要があります。javascriptでは実現不可能です。

その他

常に最前面

起動時だけ最前面

ただし、起動プロセスのウィンドウを使用して最前面化する必要があります。

Windowsの標準仕様

マイクロソフトの出しているユーザーエクスペリエンスガイドライン

に、Z order に関する記述があります(P479)。

これによると、他のプロセスのウィンドウを変更するなとあります。
Windows 上のアプリケーションは、このガイドラインに従うべきであり、
Z order は触らない方がイイというコトになります。


Tags: :Windows, :ウィンドウ・システム, :プログラミング


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS