ウィンドウを閉じる方法

ウィンドウを閉じるためにはCTRLWIN関数を利用します。

ソフトウェアによっては「保存しますか?」のようなダイアログボックスが表示されるかもしれません。

そのような場合は引数でCLOSE2を指定することによりダイアログボックスを無視して終了させることができます。

CTRLWIN関数はウィンドウのIDが必要になるので事前にGETID関数でウィンドウのIDを取得しておきましょう。

 

ウィンドウを閉じるサンプル

メモ帳を起動させておいてください。

id = GETID("メモ帳") // メモ帳のIDを取得
CTRLWIN(id, CLOSE)

 

CTRLWIN関数リファレンス

CTRLWIN関数のリファレンスをマニュアルから転載します。

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

 

ウィンドウをアクティブにする方法

ウィンドウをアクティブにするにはCTRLWIN関数を利用します。

事前に操作対象にするウィンドウのIDを取得する必要があるのでGETID関数と組み合わせて利用しましょう。

CTRLWIN関数は他にもウィンドウを最大化させたり再前面に固定するといった使い方もできます。

 

ウィンドウをアクティブにするサンプル

対象となるウィンドウが最小化されている場合は通常表示に戻します。

対象となるウィンドウのアクティブ状態をチェックし、非アクティブであればアクティブにします。

電卓を起動させておいてください。

id = GETID("電卓") // 電卓のIDを取得
IFB STATUS(id, ST_ICON) // ウィンドウがアイコン状態(最小化)かチェック
 CTRLWIN(id, NORMAL) // 表示を通常にする
ENDIF
IFB !STATUS(id, ST_ACTIVE) // ウィンドウがアクティブかチェック
 CTRLWIN(id, ACTIVATE) // アクティブにする
ENDIF

 

CTRLWIN関数リファレンス

CTRLWIN関数のリファレンスをマニュアルから転載します。

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

 

ウィンドウの位置を変更する方法

ウィンドウの位置を変更するためにはACW関数を利用します。

どのウィンドウを対象にするのか指定するためにはウィンドウIDが必要なのでGETID関数やGETALLWIN関数と組み合わせて利用しましょう。

 

ウィンドウの位置を変更するサンプル

id = GETID(GET_THISUWSC_WIN) // UWSCのウィンドウのIDを取得
x = STATUS(id, ST_X) // X座標を返す
y = STATUS(id, ST_Y) // Y座標を返す
ACW(id, x - 10, y - 10) // ウィンドウの位置を左上にずらす

 

ACW関数リファレンス

ACW関数のリファレンスをマニュアルから転載します。

ACW( ID, x, y, [幅, 高さ, ms] )
引数
 ID: Windowを識別するID
 x, y: Window位置
 幅, 高さ: Window幅, 高さ

 

 

ウィンドウの各種状態を取得する方法

ウィンドウの各種状態を取得するためにはSTATUS関数を利用します。

ウィンドウのIDが必要になるのでGETID関数やGETALLWIN関数と組み合わせて利用しましょう。

 

ウィンドウの各種状態を取得するサンプル

id =  GETID(GET_THISUWSC_WIN) // UWSCのウィンドウのIDを取得
title = STATUS(id, ST_TITLE) // タイトルを返す
x = STATUS(id, ST_X) // X座標を返す
y = STATUS(id, ST_Y) // Y座標を返す
PRINT "x座標:" + x
PRINT "y座標:" + y

ウィンドウの各種状態を取得する方法実行結果

 

STATUS関数リファレンス

STATUS関数のリファレンスをマニュアルから転載します。

戻値 = STATUS( ID, 取得したいもの )
引数
 ID: Windowを識別するID
 取得したいもの: 以下の定数
   ST_TITLE    // タイトルを返す
   ST_CLASS    // クラス名を返す
   ST_X      // X座標を返す
   ST_Y      // Y座標を返す
   ST_WIDTH    // 幅を返す
   ST_HEIGHT    // 高さを返す
   ST_CLX     // クライアント領域のX座標を返す
   ST_CLY     // クライアント領域のY座標を返す
   ST_CLWIDTH   // クライアント領域の幅を返す
   ST_CLHEIGHT   // クライアント領域の高さを返す
   ST_PARENT    // 親ウィンドウのIDを返す、親が無ければ-1
   ST_ICON     // アイコン状態であればTrue、でなければFalse
   ST_MAXIMIZED  // 最大化状態であればTrue、でなければFalse
   ST_VISIBLE   // 通常の表示状態であればTrue、でなければFalse
   ST_ACTIVE    // アクティブ状態であればTrue、でなければFalse
   ST_BUSY     // ビジー状態であればTrue、でなければFalse
   ST_ISID     // 有効なIDであればTrue、でなければFalse
   ST_WIN64    // 64bitアプリであればTrue、でなければFalse
   ST_PATH     // EXEのパスを返す
   ST_PROCESS   // プロセスIDを返す
   ST_MONITOR   // 表示されているモニタ番号を返す

 

GETID関数リファレンス

GETID関数のリファレンスをマニュアルから転載します。

戻値 = GETID( タイトル, [クラス名, 待ち時間秒, MDI子タイトル] )
引数
 タイトル: 識別したいウィンドウのタイトル (タイトルの一部分だけでもOK)
 クラス名: 区別に必要でなければ省略して構いません (前方一致でのみ部分指定可)
 待ち時間秒: 確認できるまで指定された秒数待ちます (0.01~)
         0: 0.1~10秒まで状況や負荷により自動判断 (デフォルト)
        -1: 無期限待ち
 MDI子タイトル: MDIウィンドウ中の子ウィンドウタイトル

戻値
 そのウィンドウを識別するID (NGの時は -1)

 ※ GETID は始めに完全一致のウィンドウを探します
   見つからなければ次に部分一致のウィンドウを探します
 ※ 特別なウィンドウの指定
   GETID(GET_ACTIVE_WIN)    // アクティブウィンドウを返します
      GET_FROMPOINT_WIN   // マウスカーソル下のウィンドウ
      GET_FROMPOINT_OBJ   // マウスカーソル下のオブジェクト
      GET_THISUWSC_WIN   // UWSC自身
      GET_LOGPRINT_WIN   // ログ表示用ウィンドウ
      GET_BALLOON_WIN   // ふきだし用ウィンドウ(GET_FUKIDASI_WIN でも可)
      GET_FORM_WIN     // フォーム画面ウィンドウ
      GET_SCHEDULE_WIN   // スケジュール"指定Windowが現れた時"でキャッチしたウィンドウ('別プロセス実行'時はNG)

 

全ウィンドウのIDを取得する方法

UWSCで各ウィンドウの状態を取得するために、まずはウィンドウのIDを取得する必要があります。

ウィンドウのIDを取得する方法はいくつかありますが、今回は全ウィンドウのIDを取得する方法です。

 

全ウィンドウのIDを取得するサンプル

全ウィンドウのIDを取得してウィンドウのタイトルを表示させてみました。

n = GETALLWIN()
PRINT "ウィンドウの数:" + n
IFB n > 0
 FOR i = 0 TO (n - 1)
  PRINT ALL_WIN_ID[i] + ":" + STATUS(ALL_WIN_ID[i], ST_TITLE)
 NEXT
ELSE
 PRINT "ウィンドウが見つかりませんでした"
ENDIF

全ウィンドウのIDを取得する方法実行結果

 

GETALLWIN関数リファレンス

GETALLWIN関数のリファレンスをマニュアルから転載します。

戻値 = GETALLWIN( [ID] )
引数 
 ID: 指定ウィンドウの子ウィンドウを取得したい場合に、親ウィンドウIDを指定
戻値
 取得したWindowの数
 取得したIDは配列変数の ALL_WIN_ID[ ] に格納される (配列はゼロから)