Guiの作成について

Guiの作成の例

このページでは、 GuiAHKコマンド を使って、ウインドウを作成した例について説明しています。

GuiAHKコマンド を知らないと理解するのは難しいと思います。

ただ、別に AHKコマンド を知らなくても、大まかに「こんな事が出来るんだなという」 TRR を知る上での参考にはなると思います。

とくにこだわりがなければ、理解は出来なくとも TRRAHK のスクリプトがこんな風なものなのだという参考になると思うので読んでみてはいかがでしょうか?

AutoHotkey のGuiの作成の方法については、その事を説明しているWebサイトを参考にしてください。

AutoHotkeyJp

https://sites.google.com/site/autohotkeyjp/reference/commands/index_gui

現在はこのWebサイトは見る事ができないようです。

AutoHotkey Wiki のWebサイトの左のメニューの中の カテゴリー別 を選び、その中にある Gui表示 の種類を参考にするとよいと思います。

外様のWebサイト

この AutoHotkey Wiki は、このホームページとは全く関係のない別のWebサイトです。

AutoHotkey を説明している代表的なWebサイトなので参考例として挙げています。

AutoHotkey Wiki

このWebサイトの中にある以下のページを参考例として載せておきます。

この中にある Gui表示 の種類を参考にするとよいと思います。

コマンド(カテゴリー別) - AutoHotkey Wiki

GuiAHKコマンド を使って、試しに簡易的なカウントするやつを作ったのでそれを例にします。

バードウォッチャーみたいにボタンを押して数を数えるだけのやつです。

画像

+(K) のボタンを押すと数字が一つ増える。
ー(H) のボタンを押すと数字が一つ減る、というただそれだけのものです。

あと、オマケとして

画像

このウインドウ内を右クリックするとメニューが表示されて、 2個の設定を扱えるようにしています。

今回の説明で使っている全てのファイルは、以下のリンクからダウンロードできます。

pushCounterStorage.zip

( 6 KByte )

あと、音のファイルもあります。

katikati.zip

( 1 KByte )

katikati.zip のファイルは、解凍した後に TextRunRun の実行ファイルがあるフォルダに配置しておけばよいです。

カウントするやつのソースコード

まず、ソースコードを全部貼っておきます。

51GuiClose.trr
Gui , 51:Hide
51GuiEscape.trr
Gui , 51:Hide
1_ps_start.trr
; 変数の宣言
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%
%--
ps_guiMake.trr
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%
G_subroutine1.trr
if( ps_soundFlag ){
    SoundPlay , %ps_soundFile%
}
ps_numValue++
F_setControl(51, "ps_countText" , ps_numValue)
%--
G_subroutine2.trr
if( ps_numValue > 0) {
    if( ps_soundFlag ){
        SoundPlay , %ps_soundFile%
    }
    ps_numValue--
    F_setControl(51, "ps_countText", ps_numValue)
}
%--
G_subroutine3.trr
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)
}
%--
G_subroutine4.trr
if( ps_soundFlag ){
    ps_soundFlag := False
    Menu , ps_RClick, Uncheck, 音を鳴らす(&N)
} else {
    ps_soundFlag := True
    Menu , ps_RClick, Check, 音を鳴らす(&N)
}
%--
G_subroutine5.trr
; あえて作らないか、return のみ記述
return
51GuiContextMenu.trr
Menu , ps_RClick, Show, %A_GuiX% , %A_GuiY%

使える様にするには

fromFileName を使って作っています。
上の例はファイル名とファイル内の文字です。

ファイル名
ファイル内の文字

以上のような構成です。
ファイル名は、拡張子を除いたものがアイテム名という事になります。
ファイル内の文字がそのままソースコードです。

補足

ファイルの拡張子が、 trr となっています。

fromFileName で使用できるファイルの拡張子は、

  • txt
  • ahk
  • cvs
  • trr

のどれかというルールになっています。

これらを item のフォルダの中に配置してください。
pushCounter とでも名付けたカテゴリーフォルダの中の item のフォルダに入れて配置するとよいとおもいます。

1_ps_start のアイテムが 起動時に実行するアイテム です。

fromFileNamestartup のフォルダの中に 1_ps_start という名前のフォルダを作れば、起動時に実行されて使用できるようになります。

なお、このウインドウを一度閉じた後にまた表示させたい場合は、
Gui , 51:Show&guiShow 51 といったものを使って表示します。

ソースコードの説明

ソースコードの内容について説明していきます。

ソースコードの事をこれ以降は スクリプト と表現します。

51GuiCloseを指定しておく

51GuiClose.trr
Gui , 51:Hide

51 から 59 の番号のGuiを使用する場合、
[Guiの番号]GuiClose の名前のアイテムを作成し、以上のようなスクリプトを指定していないとウインドウが閉じないので、その対処をしています。

ついでに、 Esc キーを押した時も閉じる事ができるようにするため、以下のアイテムを作って、閉じるためのスクリプトを書いておきます。

51GuiEscape.trr
Gui , 51:Hide

Guiを作るスクリプト

ps_guiMake.trr
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 の方はグローバル宣言しておかないとエラーで止まってしまうと思います。

次に、 +(K) のボタンを押すと G_subroutine1 のサブルーチンが実行され、
ー(H) のボタンを押すと G_subroutine2 のサブルーチンが実行される様に指定しています。

TextRunRun はサブルーチンを自由な名前で作れないので、これらの名前のアイテムを作る事で動作を指定できる様にします。

G_subroutine1 の事は別のページで説明します。

普通の使い方 G_subroutineについて

Gui , 51:+Resize でウインドウのサイズを変更できる様に、
Gui , 51:+AlwaysOnTop
で、このウインドウが常に最前面に表示するようにしています。

最後の一行は、このウインドウの初期の位置とサイズを指定しているものです。
そしてウインドウタイトルも指定しています。

もう少し説明が続くので次のページに移行します。