【AutoHotkey】なにその仕様

ちょっとしたツールを作るのに大活躍しているAutoHotkey。

 

俺はちょっとクセ強めに感じる。

 

 

 

 

ちなみに未だにV1を使っている。

V2への移植が大変なのよ。

「ちょっとやってみようか」レベルじゃないので本気で取り組まないといけない。

→ 面倒だからV1で良いよね になるw

 

 

俺の俺による俺のための常駐ツールを作った。

毎日1回オールクリアするので、「All Clear」ボタンを作った。

押すとチェックボックスがオフになったり文字列が非表示になったりする。

 

ところが、押す必要のないタイミングで間違えて押してしまった。

全部消えた・・・

 

    /\___/ヽ 
   /    ::::::::::::::::\ う
  . |  ,,-‐‐   ‐‐-、 .:::| わ
  |  、_(o)_,:  _(o)_, :::|ぁぁ
.   |    ::<      .::|あぁ
   \  /( [三] )ヽ ::/ああ
   /`ー‐--‐‐―´\ぁあ

 

やっぱり確認ダイアログ挟まないとダメだなw

 

 

ダイアログを出すのはMsgBoxだ。

作ったアプリ(やショートカット)で途中の変数の値を見るのに大活躍。

俺の中で使用回数がブッチギリで多いコマンドだと言える。

 

OK & キャンセルのダイアログを出す場合、こうなる。

 

MsgBox, 4145,, 本当にクリアしますか?

みたいな感じだ。

 

 

4145は

ボタンを「OK」「キャンセル」にする:1

アイコンを「!」にする:48

表示方法をモーダルにする:4096

・・・の合計値になる。

 

で、目的のダイアログが表示される。

(田舎の4K縦ディスプレイで表示していたので)ダイアログが見当たらない。

あ!画面の中心に居た!w

 

元のアプリは画面の左下にほぼ隙間無く表示しているので、ダイアログがそんな位置に出てもらっても困る。

アプリの真ん中辺が理想だ。

 

・・・・・?

 

 

MsgBoxに座標指定できるようなオプションが無いだと!?

 

リファレンスを何度見ても無い。

皆無。

 

 

ウィンドウを任意の場所に移動させるWinMoveというコマンドがあるんだけど

 

(1)
MsgBox, 4145,, 本当にクリアしますか?
(2)

 

(1) はウィンドウがまだ存在していないので何も起きない。

(2) はウィンドウは存在しているけど、ウィンドウ(ダイアログ)が入力待ち状態なので移動しない。

 

 

詰んだ。

 

 

助けてググえも~ん!

 

解決法はあった。

かなり力押しだw

よくこんな方法を思いついたもんだなぁ。

 

(略)
SetTimer, WinMoveMsgBox, 10
MsgBox, 4145,, 本当にクリアしますか?
(略)

WinMoveMsgBox:
  SetTimer, WinMoveMsgBox, Off
  WinMove, A, , %MSGBOX_WINDOW_X_POS%, %MSGBOX_WINDOW_Y_POS%
    Return
 
※座標は定数で定義してるんで文字列になっている。

 

上の例では10ms(ミリ秒)にしているけど、数字を大きくするとダイアログが画面中央に表示されて

指定座標にシュッと移動するのが見られるw

 

 

何か別のことでも使えるテクニックかもしれない。

 

カテゴリー: PC, ソフトウェア, 技術的 タグ: ,  [パーマリンク]

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です