2016-08-20 1 views
0

Was ich versuche zu erreichen, ist, mit dem SetTimer-Befehl unendliche Subroutinen zu starten. Der Code unten funktioniert nicht obv, aber es sollte ziemlich klar sein, was ich versuche zu tun. Auf jeden Fall für jedes Mal, ich F1 drücken Ich möchte ein neues Unterprogramm starten, mit einem anderen NamenLauch Infinite Subroutinen mit SetTimer-Befehl

guiCount := 0 
f1::  
guiCount++ 
drawFrameAroundWin(WinExist("a"), "Red", 5, 1) 
WinGetActiveTitle, activeWinTitleFrame 
wingetpos,activeWinTitleFrameX,,,,%activeWinTitleFrame% 
SetTimer, Window%guiCount% 
return 

Window%guiCount%: 
wingetpos,activeWinTitleFrameX2,,,,%activeWinTitleFrame% 
    if (activeWinTitleFrameX != activeWinTitleFrameX2) 
     { 
     Gui,Destroy 
     SetTimer, window%guiCount%, off 
     } 
return 

Antwort

1

Wie Sie wissen, Subroutinen kann nicht mit einer Variable deklariert werden, wie Sie wollen. Sie scheinen zu versuchen, Threads zu verwenden, aber offizielle AutoHotkey fehlt ihnen, aber es gibt 3 Optionen: AutoHotkey.dll bietet Thread-ähnliche Funktionen (google it), können Sie ändern und speichern Sie ein neues Skript und führen Sie es getrennt jedes Mal, wenn Sie möchten Erstellen Sie einen neuen Fensterrahmen, oder verwenden Sie einfach eine festgelegte Zeit mit einem Timer (wenn es nicht nötig ist, die GUI in einer präzisen Angelegenheit zu zerstören) und zerstören Sie die Fenster in der Reihenfolge vom ersten bis zum letzten.

zeigt unter der 3. Option, nicht eine perfekte Umsetzung:

guiNumArr := [] 

F1:: 
    WinGetActiveStats, Title, Width, Height, X, Y 
    guiCurrent := drawFrameAroundWin(Width, Height) 
    guiNumArr.push(guiCurrent) 
    Gui, %guiCurrent%:Show, NoActivate ; The Gui will not steal keyboard focus 
    SetTimer, guiDestroy, 2000 
Return 

guiDestroy: 
    if (guiNumArr.length()) { 
     x := guiNumArr.RemoveAt(1) 
     gui, %x%:destroy 
     return 
    } 
    else 
     SetTimer, guiDestroy, Off 
return 

drawFrameAroundWin(TW:=320, TH:=240, BorderThickness:=3, BorderColor:="0000FF") { 
    static guiNumber := 0 

    guiNumber++ 
    colors := ["Red", "Yellow", "Blue", "Green"] 

    random, x, 1, 4 
    BorderColor := colors[x] 

    Gui, %guiNumber%:Margin, %BorderThickness%, %BorderThickness% 
    Gui, %guiNumber%:Color, %BorderColor% 
    Gui, %guiNumber%:Add, Text, w%TW% h%TH% 0x6 ; Draw a white static control 
    Gui, %guiNumber%:+LastFound 
    WinSet, TransColor, FFFFFF 
    Gui, %guiNumber%: -Caption +AlwaysOnTop +ToolWindow 

    Return guiNumber 
} 
+0

Ty sehr für Ihre Zeit – user3159140