GETCTLHND関数

本ページには広告が含まれています。

ボタン等、オブジェクトのハンドルを取得します。

構文
  1. Double = GETCTLHND( ID, アイテム名, 番号 )
引数
ID (Integer)必須
Windowを識別するID
アイテム名 (String)必須
ボタン類のキャプション文字、もしくはオブジェクトのクラス名
番号 (Integer = 0)省略可
同じアイテム名がある場合に番号指定
戻り値
ハンドル値

GETCTLHND(ID,GET_MENU_HND)とするとメニュハンドルを返す

GETCTLHND(ID,GET_SYSMENU_HND)とするとシステムメニュハンドルを返す

アイテム名の見つけ方

マウスカーソル下のアイテム名を吹き出しで表示します。

UWSC
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・クラス名・ハンドル値を吹き出しに表示

UWSC
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

プログラム実行例

メモ帳の指定したメニュー項目を無効化する

[ファイル]のメモ帳の終了をグレー表示でクリックできないようにする。

UWSC
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を取得します。