2011年12月26日月曜日

[ExcelVBA] WindowsAPI 一覧


■はじめに
WindowsAPIを学習するにあたって、日々わかったことをまとめていく予定です。
まずは、学習し始めに知っておくと少しは楽になるかもしれない内容をまとめたのでそちらからどうぞ
WindowsAPIについて

※注:コードの検証は、XP、Office2003でしか行なっておりません。

■API一覧
API内容
BringWindowToTopウィンドウをZオーダーの先頭に持ってくる
EnumWindows画面上のすべてのトップレベルウィンドウを列挙する
FindWindowクラス名やウィンドウ名からウィンドウハンドルを取得
FindWindowEx親ハンドル、クラス名、ウィンドウ名から子ハンドルを取得
GetClassNameウィンドウが属するクラスの名前を取得
GetDesktopWindowデスクトップのハンドルを取得
GetWindowRectウィンドウ全体の座標を取得
SendMessageメッセージをウィンドウへ送信
Sleepスレッドの実行を指定の時間だけ中断する


■宣言一覧
Declare Function BringWindowToTop Lib "user32" (ByVal hwnd As Long) As Long

Declare Function EnumWindows Lib "user32.dll" (ByVal lpEnumFunc As Long, lParam As Long) As Long

Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" _
    (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Declare Function GetClassName Lib "user32" Alias "GetClassNameA" _
    (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long

Declare Function GetDesktopWindow Lib "user32" () As Long

Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long
Type RECT
    Left As Long
    Top As Long
    Right As Long
    Bottom As Long
End Type

Declare Function MoveWindow Lib "user32.dll" _
        (ByVal hwnd As Long, ByVal x As Long, ByVal y As Long, _
         ByVal nWidth As Long, ByVal nHeight As Long, ByVal bRepaint As Long) As Long

Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" _
    (ByVal hWnd As Long, ByVal MSG As Long, _
     ByVal wParam As Long, ByVal lParam As Long) As Long

Declare Sub Sleep Lib "Kernel32" (ByVal dwMilliseconds As Long)


'■SendMessageで使用
Const BM_CLICK = &HF5       'Clickする        第三:0, 第四:0, Ret:なし
Const WM_GETTEXT = &HD       'Textを取得する  第三:受取る文字数, 第四:受取る為の変数
Const WM_GETTEXTLENGTH = &HE '文字数を取得する 第三:0, 第四:0, Ret:バイト数
Const WM_CLOSE = &H10            '閉じる           第三:0, 第四:0, Ret:なし


■さんぷるこーど
EnumWindow関数を使って楽にハンドルを取得したい

0 件のコメント: