6

スクリプトに表示するようなものが必要ですがmsgbox、[OK] をクリックするのを待つ必要はありません。

必要なのは、文字列を一定時間表示してから非表示にすることです。ライブ タイマー文字列を表示できると便利ですが、必須ではありません。

何かのようなもの:

;//...
msgbox, MyInformationString; display information
sleep, 30000 ; wait 30 seconds
;// close msgbox but HOW ???
;//...

msgboxコマンドである必要はありません。しかし、新しいポップアップを作成する方法や、情報を表示するその他の方法がわかりません。形式は、ここでの私の関心事ではありません。

4

2 に答える 2

10

docsを見てmsgboxください。AutoHotkey を使用して作成しているため、メッセージを自動的に閉じる時間制限を設定できます。つまり、何も押す必要はありません。ボックスが表示されてから消えます。msgbox

MsgBox [, Options, Title, Text, Timeout]

Timeoutは最後のパラメータです:

(オプション) 秒単位のタイムアウト。小数点を含めることができますが、デフォルトでは式ではありません。v1.1.06+ では、これは % mins*60 などの強制式にすることができます。

この値が 2147483 (24.8 日) を超えると、2147483 に設定されます。タイムアウトが経過すると、メッセージ ボックスは自動的に閉じられ、IfMsgBox コマンドは値 TIMEOUT を確認します。

既知の制限: MsgBox に [OK] ボタンしか含まれていない場合、自身のスレッドが別のスレッドによって中断されている間に MsgBox がタイムアウトすると、IfMsgBox は [OK] ボタンが押されたと見なします。

于 2013-07-07T23:10:37.397 に答える
9

独自のカウントダウンが本当に必要な場合は、MsgBox として機能する GUI を作成できます。

ここに画像の説明を入力

この例では、4 つのパラメーターがあります。

  1. ウィンドウのタイトル
  2. メッセージ
  3. 秒数
  4. ラベルが消えるときに呼び出すラベルの名前。

コードが通常の MsgBox から次のように変更される方法を次に示します。

MsgBox, Title, Msg
OtherCode
return

MsgBoxTimed("Title", "Msg", 10, "Foo")
return
Foo:
OtherCode
return

この関数は同じファイルにある必要があります。#Include

MsgBoxTimed(title, msg, seconds, complete="") {
    static init = false, _seconds, _complete
    global Msg92, Seconds92
    if (!init)
    {
        init := true
        Gui, 92:Font, s24
        Gui, 92:Add, Text, vMsg92 Center w360, %msg%
        Gui, 92:Font, s30 cRed
        Gui, 92:Add, Text, vSeconds92 Center w360, %seconds%
    }

    _seconds := seconds
    _complete := complete

    GuiControl, 92:, Msg92, %msg%
    Gui, 92:Show, w400 h150, %title%

    Update92:
    GuiControl, 92:, Seconds92, %_seconds%
    _seconds -= 1
    if (_seconds > 0) {
        SetTimer, Update92, -1000
    }
    else {
        Gui, 92:Hide
        if (_complete)
            SetTimer, %_complete%, -1
    }
    return
} 
于 2013-07-08T21:52:06.170 に答える