本ページには広告が含まれています。
ボタン等、オブジェクトのハンドルを取得します。
- 構文
- Double = GETCTLHND( ID, アイテム名, 番号 )
- 引数
- ID (Integer)必須
- Windowを識別するID
- アイテム名 (String)必須
- ボタン類のキャプション文字、もしくはオブジェクトのクラス名
- 番号 (Integer = 0)省略可
- 同じアイテム名がある場合に番号指定
- 戻り値
- ハンドル値
GETCTLHND(ID,GET_MENU_HND)とするとメニュハンドルを返す
GETCTLHND(ID,GET_SYSMENU_HND)とするとシステムメニュハンドルを返す
アイテム名の見つけ方
マウスカーソル下のアイテム名を吹き出しで表示します。
SETHOTKEY(VK_ESC, EMPTYPARAM, "forceQuit")
SETHOTKEY(VK_S, MOD_ALT, "output")
PUBLIC cls
WHILE (TRUE)
DIM ID = GETID(GET_FROMPOINT_OBJ)
cls = STATUS(id, ST_CLASS)
FUKIDASI(cls)
SLEEP(0.001)
WEND
PROCEDURE output()
SENDSTR(0, cls)
PRINT cls
SLEEP(0.500)
FEND
//////////////////////////////////////////////////
// 【引数】
//
// 【戻り値】
//
//////////////////////////////////////////////////
PROCEDURE forceQuit()
EXITEXIT
FEND
記述例
マウスカーソル下のID・クラス名・ハンドル値を吹き出しに表示
SETHOTKEY(VK_ESC, EMPTYPARAM, "forceQuit")
WHILE TRUE
DIM ID = GETID(GET_FROMPOINT_OBJ)
FUKIDASI("ID<#TAB><#TAB>" + ID + "<#CR>" + _
"クラス名<#TAB><#TAB>" + STATUS(ID, ST_CLASS) + "<#CR>" + _
"ハンドル値<#TAB>" + GETCTLHND(ID, GET_MENU_HND))
SLEEP(0.001)
WEND
//////////////////////////////////////////////////
// 【引数】
//
// 【戻り値】
//
//////////////////////////////////////////////////
PROCEDURE forceQuit()
EXITEXIT
FEND
プログラム実行例
メモ帳の指定したメニュー項目を無効化する
[ファイル]のメモ帳の終了をグレー表示でクリックできないようにする。
DEF_DLL GetSubMenu(HWND, int): HWND: user32.dll
DEF_DLL EnableMenuItem(HWND, UINT, UINT): DWORD: user32.dll
CONST MF_BYPOSITION = $400
CONST MF_GRAYED = $1
DIM ID = EXEC("notepad")
DIM hwnd = GetSubMenu(GETCTLHND(ID, GET_MENU_HND), 0)
PRINT EnableMenuItem(hwnd, 9, MF_BYPOSITION + MF_GRAYED)
他の項目は以下の表を参照。
値は、(GetSubMenu第ニ引数)と(EnableMenuItem第二引数)を表しています。
例えばフォントの場合、2-1なので以下のように指定します。
[syntaxHighlight]GetSubMenu(GETCTLHND(ID, GET_MENU_HND), 2) EnableMenuItem(hwnd, 1, MF_BYPOSITION + MF_GRAYED)[/syntaxHighlight]値 | 項目 |
---|---|
0-0 | 新規 |
0-1 | 新しいウィンドウ |
0-2 | 開く |
0-3 | 上書き保存 |
0-4 | 名前を付けて保存 |
0-6 | ページ設定 |
0-7 | 印刷 |
0-9 | メモ帳の終了 |
値 | 項目 |
---|---|
1-11 | 置換 |
1-14 | すべて選択 |
1-15 | 日付と時刻 |
値 | 項目 |
---|---|
2-0 | 右端で折り返す |
2-1 | フォント |
値 | 項目 |
---|---|
3-0 | ズーム |
3-1 | ステータスバー |
値 | 項目 |
---|---|
4-0 | ヘルプの表示 |
4-1 | フィードバックの送信 |
4-3 | バージョン情報 |
使用関数
関連記事
- CHKBTN関数 (スクリプト関数)
- 指定したIDのウィンドウにあるチェックボックス・ラジオボタンがチェックされているかを返します。
- CLKITEM関数 (スクリプト関数)
- 指定したIDのウィンドウのアイテムをクリックします。アイテムに指定できるものにはボタン・チェックボックス・ラジオボタン・リストボックス・コンボボックス・タブコントロール・メニュー・ツリービュー・リストビュー・ツールバー・リンクがあります。
- GETID関数 (スクリプト関数)
- 指定したウィンドウのIDを取得します。第一引数に取得したいウィンドウのタイトル(一部でも可)を指定します。UWSCでウィンドウを操作するのによく使う関数です。
- GETITEM関数 (スクリプト関数)
- 指定したIDのウィンドウのキャプション文字やリストなどを取得します。取得した情報は配列変数のALL_ITEM_LIST[ ]に格納されます。戻値は取得した数でInteger型です。
- HNDTOID関数 (スクリプト関数)
- 引数に指定したハンドル値をIDに変換して返します。IDをハンドル値に変換するにはIDTOHND関数を使います。
- IDTOHND関数 (スクリプト関数)
- 引数に指定したIDをハンドル値に変換して返します。ハンドル値をIDに変換するにはHNDTOID関数を使います。
- STATUS関数 (スクリプト関数)
- ウィンドウの各種状態を取得します。タイトル・クラス名・X座標・Y座標・幅・高さなどを取得することができます。
- ACW関数 (スクリプト関数)
- 指定したIDのウィンドウの位置・サイズを変更します。IDのみを指定した場合、そのウィンドウをアクティブにします。
- CTRLWIN関数 (スクリプト関数)
- ウィンドウの状態を操作します。ウィンドウを終了、アクティブ化、表示・非表示、最大化・最小化などができます。
- GETALLWIN関数 (スクリプト関数)
- 全ウィンドウのIDを取得します。