SetForegroundWindow関数(API)

SetForegroundWindow関数指定されたウィンドウをフォアグラウンドウィンドウ(デスクトップ上に表示されているウィンドウの中で最前面に表示されかつユーザの入力を受け付けられる状態)にするAPI関数です。

目次

Windows APIとは

まずAPI(Application Programming Interface)とは、アプリケーションからOSやプログラム言語を操作するためのライブラリです。例えば、APIを利用してファイル制御やウインドウ制御などの処理を行うことが出来ます。そして、Windows APIですが、こちらはMicrosoft WindowsのAPIのことを指します。Windows APIは、Windowsのバージョン毎に拡張されており、16ビットは「Win16 API」32ビットは「Win32 API」と呼ばれます。

SetForegroundWindow関数とは

SetForegroundWindow関数は、指定されたウィンドウをフォアグラウンドウィンドウ(デスクトップ上に表示されているウィンドウの中で最前面に表示されかつユーザの入力を受け付けられる状態)にするAPI関数です。

SetForegroundWindow("ウィンドウのハンドル")
構文SetForegroundWindow(hWnd, nCmdShow)
引数省略説明
hWnd×ウィンドウのハンドルを指定します。

引数に指定したウィンドウハンドルを持つウィンドウをフォアグラウンドウィンドウにし、アクティブにします。成功時には「0」以外の値を、失敗時には「0」を返します。次のコードは、ペイントをフォアグラウンドウィンドウにするサンプルです。


#If VBA7 Then
Private Declare PtrSafe Sub SetForegroundWindow Lib "kernel32" (ByVal ms As LongPtr)
#Else
Private Declare Sub SetForegroundWindow Lib "kernel32" (ByVal ms As Long)
#End If

こちらはSetForegroundWindow関数を利用するためのAPI宣言になります。API宣言SetForegroundWindow関数を利用しますという宣言で必ず記述します。ここで注意点がありますが、API宣言を「IF~Thenステートメント」で分岐させているのが分かるかと思います。これは、office2010で64bit(ビット)版の場合は書き方が異なるため、「IF~Thenステートメント」でそれぞれAPI宣言をしています。手元のPC環境に合わせた書き方でも大丈夫ですが、汎用性を持たせるための記述になりますので、追記しておきましょう。
参考元は「32ビット版のOffice2010プログラムでVBAマクロを編集すると・・・」になりますので、一度確認してください。

もう1つ注意する点はSetForegroundWindow関数を利用している間は、EXCEL操作は一切行えません。処理中でも操作できるようにするには、DoEvents関数を利用する必要があります。こちらはWindowsに制御を移してくれる関数でループ処理などで利用する場合、プログラムが固まることがなくなります。

また、宣言ステートメントは、最初のプロシージャ宣言の前に配置する必要がありますので、一番上に記述してください。

SetForegroundWindowで時間を止める

SetForegroundWindow関数を利用して時間を止めます。

処理の3秒後にメッセージボックスを表示させるサンプルコード

こちらのサンプルコードは処理をするとSetForegroundWindow関数で3秒間処理を停止し、その後にメッセージボックスを表示させるマクロになります。


#If VBA7 Then
Private Declare PtrSafe Sub SetForegroundWindow Lib "kernel32" (ByVal ms As LongPtr)
#Else
Private Declare Sub SetForegroundWindow Lib "kernel32" (ByVal ms As Long)
#End If

Sub sample()

 SetForegroundWindow 3000

 msgBox "3秒間処理を止めました。"

End Sub

実行結果

3秒後にメッセージボックスが表示されます。

SetForegroundWindow関数を利用してメッセージボックスを表示

利用されているコンテンツ

SetForegroundWindow関数は、IE(InternetExplorer)を操作する上で必ず利用されるものです。ほとんどのコンテンツで利用されていますので、ここでは代表的なコンテンツを紹介します。

ExcelのVBAについてのQ&A掲示板

↑ExcelのVBA全般について分からない事があればこちらの掲示板よりご質問ください^^

VBAのInternetExplorer操作入門

↑ExcelのVBAをマスターできたら、エクセルVBAのIE(InternetExplorer)操作にも挑戦してみてください^^

VBAのIE制御入門RSS

RSSフィードを登録すると最新記事を受け取ることができます。

VBAIE操作のスカイプレッスン

エクセルVBAのステートメント

こちらでは、エクセルVBAの事例で利用したステートメントをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。

エクセルVBAのオブジェクト

こちらでは、エクセルVBAの事例で利用したオブジェクトをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。

エクセルVBAのプロパティ

こちらでは、エクセルVBAの事例で利用したオブジェクトのプロパティをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。

エクセルVBAのメソッド

こちらでは、エクセルVBAの事例で利用したオブジェクトのメソッドをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。

エクセルVBAのイベント

こちらでは、エクセルVBAの事例で利用したオブジェクトのイベントをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。