Guiの作成について
Guiの作成の例
このページでは、 Gui の AHKコマンド を使って、ウインドウを作成した例について説明しています。
Gui の AHKコマンド を知らないと理解するのは難しいと思います。
ただ、別に AHKコマンド を知らなくても、大まかに「こんな事が出来るんだなという」 TRR を知る上での参考にはなると思います。
とくにこだわりがなければ、理解は出来なくとも TRR と AHK のスクリプトがこんな風なものなのだという参考になると思うので読んでみてはいかがでしょうか?
AutoHotkey のGuiの作成の方法については、その事を説明しているWebサイトを参考にしてください。
AutoHotkeyJp
https://sites.google.com/site/autohotkeyjp/reference/commands/index_gui
現在はこのWebサイトは見る事ができないようです。
AutoHotkey Wiki のWebサイトの左のメニューの中の カテゴリー別 を選び、その中にある Gui表示 の種類を参考にするとよいと思います。
この AutoHotkey Wiki は、このホームページとは全く関係のない別のWebサイトです。
AutoHotkey を説明している代表的なWebサイトなので参考例として挙げています。
Gui の AHKコマンド を使って、試しに簡易的なカウントするやつを作ったのでそれを例にします。
バードウォッチャーみたいにボタンを押して数を数えるだけのやつです。
のボタンを押すと数字が一つ減る、というただそれだけのものです。
あと、オマケとして
このウインドウ内を右クリックするとメニューが表示されて、 2個の設定を扱えるようにしています。
今回の説明で使っている全てのファイルは、以下のリンクからダウンロードできます。
あと、音のファイルもあります。
katikati.zip のファイルは、解凍した後に TextRunRun の実行ファイルがあるフォルダに配置しておけばよいです。
カウントするやつのソースコード
まず、ソースコードを全部貼っておきます。
Gui , 51:Hide
Gui , 51:Hide
; 変数の宣言
global ps_countText = 0
global ps_soundFile := A_ScriptDir . "\katikati.wav"
global ps_soundFlag := True
global ps_winTitle := "カウントGui"
global ps_alwayTopFlag := True
global ps_numValue = 0
; Guiを作る
ps_guiMake
; 右クリックのメニュー
Menu , ps_RClick, Add, 常に最前面(&T), G_subroutine3
Menu , ps_RClick, Add, 音を鳴らす(&N), G_subroutine4
Menu , ps_RClick, Add
Menu , ps_RClick, Add, キャンセル(&C), G_subroutine5
Menu , ps_RClick, Check, 常に最前面(&T)
Menu , ps_RClick, Check, 音を鳴らす(&N)
; 表示して、半透明にする
Gui , 51:Show
WinSet , Transparent, 180, %ps_winTitle%
%--
Gui , 51:Font, S25
Gui , 51:Add, Text, X20 Y50 W80 H50 vps_countText , 0
Gui , 51:Font, S15
Gui , 51:Add, Button, X100 yp+0 W80 H50 gG_subroutine1 Default , +(&K)
Gui , 51:Font, S10
Gui , 51:Add, Button, x+50 yp+10 W50 H30 gG_subroutine2 , ー(&H)
Gui , 51:+Resize
Gui , 51:+AlwaysOnTop
Gui , 51:Show, Hide x700 y290 w290 h135 , %ps_winTitle%
if( ps_soundFlag ){
SoundPlay , %ps_soundFile%
}
ps_numValue++
F_setControl(51, "ps_countText" , ps_numValue)
%--
if( ps_numValue > 0) {
if( ps_soundFlag ){
SoundPlay , %ps_soundFile%
}
ps_numValue--
F_setControl(51, "ps_countText", ps_numValue)
}
%--
if( ps_alwayTopFlag ){
ps_alwayTopFlag := False
Gui , 51:-AlwaysOnTop
Menu , ps_RClick, Uncheck, 常に最前面(&T)
} else {
ps_alwayTopFlag := True
Gui , 51:+AlwaysOnTop
Menu , ps_RClick, Check, 常に最前面(&T)
}
%--
if( ps_soundFlag ){
ps_soundFlag := False
Menu , ps_RClick, Uncheck, 音を鳴らす(&N)
} else {
ps_soundFlag := True
Menu , ps_RClick, Check, 音を鳴らす(&N)
}
%--
; あえて作らないか、return のみ記述
return
Menu , ps_RClick, Show, %A_GuiX% , %A_GuiY%
使える様にするには
fromFileName
を使って作っています。
上の例はファイル名とファイル内の文字です。
ファイル内の文字
以上のような構成です。
ファイル名は、拡張子を除いたものがアイテム名という事になります。
ファイル内の文字がそのままソースコードです。
ファイルの拡張子が、 trr となっています。
fromFileName で使用できるファイルの拡張子は、
- txt
- ahk
- cvs
- trr
のどれかというルールになっています。
これらを
item
のフォルダの中に配置してください。
pushCounter
とでも名付けたカテゴリーフォルダの中の
item
のフォルダに入れて配置するとよいとおもいます。
1_ps_start のアイテムが 起動時に実行するアイテム です。
fromFileName の startup のフォルダの中に 1_ps_start という名前のフォルダを作れば、起動時に実行されて使用できるようになります。
なお、このウインドウを一度閉じた後にまた表示させたい場合は、
Gui , 51:Show
か
&guiShow 51
といったものを使って表示します。
ソースコードの説明
ソースコードの内容について説明していきます。
ソースコードの事をこれ以降は スクリプト と表現します。
51GuiCloseを指定しておく
Gui , 51:Hide
51
から
59
の番号のGuiを使用する場合、
[Guiの番号]GuiClose
の名前のアイテムを作成し、以上のようなスクリプトを指定していないとウインドウが閉じないので、その対処をしています。
ついでに、 Esc キーを押した時も閉じる事ができるようにするため、以下のアイテムを作って、閉じるためのスクリプトを書いておきます。
Gui , 51:Hide
Guiを作るスクリプト
Gui , 51:Font, S25
Gui , 51:Add, Text, X20 Y50 W80 H50 vps_countText , 0
Gui , 51:Font, S15
Gui , 51:Add, Button, X100 yp+0 W80 H50 gG_subroutine1 Default , +(&K)
Gui , 51:Font, S10
Gui , 51:Add, Button, x+50 yp+10 W50 H30 gG_subroutine2 , ー(&H)
Gui , 51:+Resize
Gui , 51:+AlwaysOnTop
Gui , 51:Show, Hide x700 y290 w290 h135 , %ps_winTitle%
この部分がGuiを作っているスクリプトです。
AutoHotkey
のスクリプトと同じなので説明は省きます。
スクリプトの中に
ps_countText
ps_winTitle
という変数があります。
ps_countText
は、
Gui , 51:Add, Text
に使うコントロール用の変数で、
ps_winTitle
は、ウインドウのタイトルに使う変数です。
このスクリプトを実行する場合はその前に
この
2つの変数を
グローバル宣言しておく必要があります。
特に、
ps_countText
の方はグローバル宣言しておかないとエラーで止まってしまうと思います。
次に、
G_subroutine1
のサブルーチンが実行され、
のボタンを押すと
G_subroutine2
のサブルーチンが実行される様に指定しています。
TextRunRun はサブルーチンを自由な名前で作れないので、これらの名前のアイテムを作る事で動作を指定できる様にします。
G_subroutine1
の事は別のページで説明します。
普通の使い方 G_subroutineについて
Gui , 51:+Resize
でウインドウのサイズを変更できる様に、
Gui , 51:+AlwaysOnTop
で、このウインドウが常に最前面に表示するようにしています。
最後の一行は、このウインドウの初期の位置とサイズを指定しているものです。
そしてウインドウタイトルも指定しています。