CTRLWIN

ウィンドウの状態を操作する関数です。ウィンドウを終了、アクティブ化、表示・非表示、最大化・最小化などができます。第一引数のIDはGETIDで取得します。

構文
CTRLWIN( ID, 命令 )
引数
ID
Windowを識別するID
命令
CLOSE
終了
CLOSE2
終了(QUIT)
ACTIVATE
アクティブ
HIDE
非表示
SHOW
表示
MIN
アイコン化
MAX
最大化
NORMAL
サイズ戻す
TOPMOST
最前面に固定
NOTOPMOST
最前面固定を解除
TOPNOACTV
最前面にするがアクティブ化はしない
戻値

CLOSEとCLOSE2の違い

CLOSEは変更箇所があれば保存するかどうかの確認メッセージを表示するのに対し、CLOSE2は確認メッセージを表示せず強制的に終了します。

CTRLWIN(ID, CLOSE)
CTRLWIN(ID, CLOSE2)

指定したIEオブジェクトを含むウィンドウ(すべてのタブ)を閉じる

Internet Explorerのウィンドウを閉じます。IE.Quitは指定したInternetExplorerオブジェクトしか閉じませんが、CTRLWINを使うとIEオブジェクトを含むウィンドウを閉じることができます。

CTRLWIN(HNDTOID(IE.hwnd), CLOSE)

プログラム実行例

コントロールパネルを起動する

DIM Shell = CREATEOLEOBJ("Shell.Application")
Shell.ControlPanelItem("control")
SLEEP(3.000)

DIM ID = GETID("コントロール パネル")
CTRLWIN(ID, CLOSE)
  1. script.function.CREATEOLEOBJ(1)
  2. com.Shell.ControlPanelItem(2)
  3. script.function.SLEEP(3)
  4. script.function.GETID(5)
  5. script.function.CTRLWIN(6)

UWSCを起動したときのウィンドウの座標をマウス位置の座標に書き換える

CTRLWIN(GETID("UWSC Pro"), CLOSE)

DIM WshShell = CREATEOLEOBJ("WScript.Shell")
DIM username = WshShell.ExpandEnvironmentStrings("%USERNAME%")

SELECT TRUE
	CASE KINDOFOS() >= 20
		path = "C:\Users\" + username + "\AppData\Roaming\UWSC\UWSC.INI"
	CASE KINDOFOS() = 13
		path = "C:\Documents and Settings\" + username + "\Application Data\UWSC\UWSC.INI"
	DEFAULT
		MSGBOX("UWSC.INIのパスを特定できませんでした。")
		EXIT
SELEND

PRINT WRITEINI("SET", "Position", G_MOUSE_X + "," + G_MOUSE_Y, path)
  1. script.function.CTRLWIN(2)
  2. script.function.CREATEOLEOBJ(4)
  3. script.function.KINDOFOS(9,12)
解説
  1. 1行目
    CTRLWIN(GETID("UWSC Pro"), CLOSE)
    
    UWSCを終了
  2. 3行目
    DIM WshShell = CREATEOLEOBJ("WScript.Shell")
    
    WshShellオブジェクトを生成。
  3. 4行目
    DIM username = WshShell.ExpandEnvironmentStrings("%USERNAME%")
    
    PCのユーザー名を取得。
  4. 6-14行目
    SELECT TRUE
    	CASE KINDOFOS() >= 20
    		path = "C:\Users\" + username + "\AppData\Roaming\UWSC\UWSC.INI"
    	CASE KINDOFOS() = 13
    		path = "C:\Documents and Settings\" + username + "\Application Data\UWSC\UWSC.INI"
    	DEFAULT
    		MSGBOX("UWSC.INIのパスを特定できませんでした。")
    		EXIT
    SELEND
    
    KINDOFOS() >= 20(OSがVista以降ならば)
    pathに「C:\Users\username\AppData\Roaming\UWSC\UWSC.INI」を代入
    KINDOFOS() = 13(OSがWindows XPならば)
    pathに「C:\Documents and Settings\username\Application Data\UWSC\UWSC.INI」を代入
    DEFAULT(それ以外ならば)
    「UWSC.INIのパスを特定できませんでした。」と表示しプログラムを終了する。
  5. 16行目
    PRINT WRITEINI("SET", "Position", G_MOUSE_X + "," + G_MOUSE_Y, path)
    
    SETセクションのPositionキーの値をマウス位置の座標に書き換え、その値を取得・出力する。
-PR-

ペイントを起動

DIM ID = EXEC("mspaint")
//CTRLWIN(ID, CLOSE)
  1. script.function.EXEC(1)
  2. script.function.CTRLWIN(3)
解説
  1. 1行目
    DIM ID = EXEC("mspaint")
    
    ペイントを起動し、IDを取得する。
  2. 2行目
    //CTRLWIN(ID, CLOSE)
    
    ペイントを終了する。

電卓(ストアアプリ)を起動

EXEC("calc")
DIM ID = GETID("電卓")

// CTRLWIN(ID, CLOSE)
  1. script.function.EXEC(1)
  2. script.function.GETID(2)
  3. script.function.CTRLWIN(4)
解説
  1. 1行目
    EXEC("calc")
    
    電卓を起動。
  2. 2行目
    DIM ID = GETID("電卓")
    
    電卓のIDを取得。EXEC関数は起動したときに戻値としてIDを返すが、ストアアプリなど一部のアプリはIDを返してくれないので起動後にGETID関数で取得します。
  3. 4行目
    // CTRLWIN(ID, CLOSE)
    電卓を閉じる。
-PR-

仮想キーで文章を入力

DIM ID = EXEC("notepad")

CTRLWIN(ID, ACTIVATE)

SCKEY(ID, VK_SHIFT, VK_T)
SCKEY(ID, VK_H, VK_I, VK_S, VK_SPACE, VK_I, VK_S, VK_SPACE, VK_A, VK_SPACE, VK_P, VK_E, VK_N, VK_OEM_PERIOD)
  1. script.function.EXEC(1)
  2. script.function.CTRLWIN(3)
  3. script.function.SCKEY(5-6)
結果
This is a pen.

ExcelからWordを起動する

CONST xlMicrosoftWord = 1

DIM Excel = CREATEOLEOBJ("Excel.Application")
Excel.Visible = TRUE

// Wordを起動
Excel.Application.ActivateMicrosoftApp(xlMicrosoftWord)

DIM ID = GETID("Microsoft Word", "OpusApp")
SLEEP(5.000)

// Wordを閉じる
CTRLWIN(ID, CLOSE)
Excel.Quit
  1. script.function.CREATEOLEOBJ(3)
  2. com.Excel.Application.Visible(4)
  3. com.Excel.Application.ActivateMicrosoftApp(7)
  4. script.function.GETID(9)
  5. script.function.SLEEP(10)
  6. script.function.CTRLWIN(13)
  7. com.Excel.Application.Quit(14)

メモ帳を幅400、高さ300で画面中央に表示

DIM w = 400
DIM h = 300
DIM sw = G_SCREEN_W
DIM sh = G_SCREEN_H
DIM ID = EXEC("notepad", FALSE, (sw - w) / 2, (sh - h) / 2, w, h)

//CTRLWIN(ID, CLOSE2)
  1. script.function.EXEC(5)
  2. script.function.CTRLWIN(7)