Function Reference

_GUICtrlMenu_GetSystemMenu

コピーと変更のためにアプリケーションがウィンドウメニューにアクセスすることを許可します。

#Include <GuiMenu.au3>
_GUICtrlMenu_GetSystemMenu($hWnd[, $fRevert = False])

 

パラメータ

$hWnd ウィンドウメニューのコピーを保持するウィンドウのハンドル
$fRevert [オプション]実行される動作を指定します。
このパラメータがFalseの場合、この関数は現在使用されているウィンドウメニューのコピーのハンドルを返します。
コピーは最初、ウィンドウメニューと同じですが変更することができます。
このパラメータがTrueの場合、この関数はウィンドウメニューをデフォルトの状態にリセットします。
以前のウィンドウメニューが存在する場合は破棄されます。

 

返し値

$fRevertパラメータがFalseの場合、返し値はウィンドウメニューのコピーのハンドルです。
    $fRevertパラメータがTrueの場合、返し値は0です。

 

注意

GetSystemMenu関数を使って自身が保持するウィンドウメニューのコピーを作成しないウィンドウは全て、標準のウィンドウメニューを受け取ります。
ウィンドウメニューは最初、$SC_CLOSE、$SC_MOVE、$SC_SIZEなどのさまざまな識別子値を持つアイテムを格納しています。
全ての定義済みウィンドウメニューアイテムは0xF000より大きい識別番号を持っています。
アプリケーションがウィンドウメニューにコマンドを追加すると、それらには0xF000より小さい識別番号が使用されます。
システムは状況に応じて標準ウィンドウメニュー上のアイテムを自動的にグレイアウトします。
アプリケーションはメニューが表示される前に送信される$WM_INITMENUメッセージに応じてチェック処理、グレイアウト処理をおこないます。

 

関連

 

こちらも参照

MSDNライブラリでGetSystemMenuを検索して下さい。

 


#include <GuiMenu.au3>

Opt('MustDeclareVars', 1)

_Main()

Func _Main()
    Local $hWnd, $hMenu, $iCount, $iI

    ; メモ帳を開く
    Run("Notepad.exe")
    WinWaitActive("[CLASS:Notepad]")
    $hWnd = WinGetHandle("[CLASS:Notepad]")
    $hMenu = _GUICtrlMenu_GetSystemMenu($hWnd)

    ; システムメニューを再生
    _GUICtrlMenu_InsertMenuItem($hMenu, 5, "&AutoIt")

    ; システムメニューを表示
    $iCount = _GUICtrlMenu_GetItemCount($hMenu)
    Writeln("System menu handle: 0x" & Hex($hMenu))
    Writeln("Item count .......: " & $iCount)
    For $iI = 0 To $iCount - 1
        Writeln("Item " & $iI & " text ......: " & _GUICtrlMenu_GetItemText($hMenu, $iI))
    Next

EndFunc   ;==>_Main

; メモ帳にテキストを1行書き込む
Func Writeln($sText)
    ControlSend("Untitled - Notepad", "", "Edit1", $sText & @CR)
EndFunc   ;==>Writeln