●概要●
宣言文 Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long,
lpRect As RECT) As Long
設定項目 内容
hwnd ウィンドウハンドルを指定[省略不可]
lpRect ウィンドウの位置、サイズ情報を取得するRECTユーザー定義型変数
を指定[省略不可]
GetWindowPlacement関数を使って、ウィンドウの位置、サイズ情報を取得することもできますが、GetWindowRect関数で、より簡単に取得することができます。
GetWindowRect関数では、引数で指定したウィンドウハンドルを持つウィンドウの位置、サイズ情報を引数として返します。
戻り値は「0」以外の値で、失敗時には「0」を返します。
次のコードは、Excelの表示位置およびサイズを取得して、メッセージダイアログで表示するサンプルです。
●サンプル●
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Private Declare Function FindWindow _
Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String _
, ByVal lpWindowName As String) As Long
Private Declare Function GetWindowRect _
Lib "user32" _
(ByVal hwnd As Long _
, lpRect As RECT) As Long
'指定したウィンドウの位置、サイズを取得する
Sub Sample()
Dim myHwnd As Long
Dim myRect As RECT
Dim myTop As Long, myLeft As Long
Dim myHeight As Long, myWidth As Long
'Excelのウインドウハンドルを取得
myHwnd = FindWindow("XLMAIN", vbNullString)
'Excelが起動していない場合はメッセージを表示して終了
If myHwnd = ERROR_SUCCESS Then
MsgBox "Excelは起動していません。", vbInformation
Exit Sub
End If
'位置、サイズ情報の取得
GetWindowRect myHwnd, myRect
With myRect
myTop = .Top
myLeft = .Left
myHeight = .Bottom - .Top
myWidth = .Right - .Left
End With
'結果の表示
MsgBox "縦位置:" & vbTab & myTop & vbCrLf _
& "横位置:" & vbTab & myLeft & vbCrLf _
& "高さ:" & vbTab & myHeight & vbCrLf _
& "幅:" & vbTab & myWidth
End Sub
●補足●
サンプルは、Excelを起動してから実行してください。Excelを起動していないときは、メッセージダイアログに「Excelは起動していません。」と表示されます。