Skript Pausieren und wieder freischalten

  • hi! ich bins (jaja schon wieder)
    ich hab nur noch ein großes problen (für mich ist das groß)
    ich schreibe gerade an menem ersten wirklichem Projekt, das per druck aud eine der 10 numpad Zahlentasten ein programm öffnet. nur solange das programm läuft sind die zahlentasten dann ja von dem skript belegt und man kan die tasten nicht mehr "normal" nutzen. deshalb hab ich gesagt wen numlock off ist dann sind die tasten von dem skript belegt und wen sie auf on ist sind es normale numtasten

    Spoiler anzeigen
    [autoit]


    $standartpfadini = @ScriptDir &"\programme.ini"
    $standartpfad = @ScriptDir &"\Programme ändern.exe"
    $standartpfadmenue = @ScriptDir &"\Hauptmenü.exe"
    $standartpfad = @ScriptDir &"\office.HOTkeys_v0.3 BETA.exe"
    $profilaktiv = IniRead($standartpfadini,"select","Profil","-kein Profil gewählt-")

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;###################PFAD###################
    $1 = Iniread($standartpfadini,$profilaktiv,"1","0")
    $2 = Iniread($standartpfadini,$profilaktiv,"2","0")
    $3 = Iniread($standartpfadini,$profilaktiv,"3","0")
    $4 = Iniread($standartpfadini,$profilaktiv,"4","0")
    $5 = Iniread($standartpfadini,$profilaktiv,"5","0")
    $6 = Iniread($standartpfadini,$profilaktiv,"6","0")
    $7 = Iniread($standartpfadini,$profilaktiv,"7","0")
    $8 = Iniread($standartpfadini,$profilaktiv,"8","0")
    $9 = Iniread($standartpfadini,$profilaktiv,"9","0")
    $0 = Iniread($standartpfadini,$profilaktiv,"0","0")

    [/autoit] [autoit][/autoit] [autoit]

    ;#################NAME#####################
    $n1 = Iniread($standartpfadini,$profilaktiv,"n1","0")
    $n2 = Iniread($standartpfadini,$profilaktiv,"n2","0")
    $n3 = Iniread($standartpfadini,$profilaktiv,"n3","0")
    $n4 = Iniread($standartpfadini,$profilaktiv,"n4","0")
    $n5 = Iniread($standartpfadini,$profilaktiv,"n5","0")
    $n6 = Iniread($standartpfadini,$profilaktiv,"n6","0")
    $n7 = Iniread($standartpfadini,$profilaktiv,"n7","0")
    $n8 = Iniread($standartpfadini,$profilaktiv,"n8","0")
    $n9 = Iniread($standartpfadini,$profilaktiv,"n9","0")
    $n0 = Iniread($standartpfadini,$profilaktiv,"n0","0")

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $num = DllCall("user32.dll","long","GetKeyState","long",0x90)
    If $num[0] = 1 Then
    $a = "1"
    Else
    $a = "0"
    EndIf

    if $a = "1" Then
    ToolTip("aktiv",0,0,)
    sleep(200)
    exitloop

    [/autoit]


    soweit komm ich und es funktioniert auch. wen die numpad led leuchtet bleibt es in der schlaufe und wenn nicht leuft das skript weiter. wenn ich dann aber (während das skript läuft auf die numlock taste drücke und es vorher "aktiv" wahr (also die sleife bereits verlassen hat) kan ich drücken was soviel ich will. es bleibt ja aus der schlaufe drausen.
    1. kann ich irgend wie sagen das es wieder zurück in die schlaufe soll?
    2. wen nicht welche möglichkeiten giebt es sonst?

    Spoiler anzeigen
    [autoit]


    ElseIf $a = "0" Then
    ToolTip("inaktiv",0,0,)
    sleep(200)
    endif
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    HotKeySet ( "{NUMPAD1}","p1")
    HotKeySet ( "{NUMPAD2}","p2")
    HotKeySet ( "{NUMPAD3}","p3")
    HotKeySet ( "{NUMPAD4}","p4")
    HotKeySet ( "{NUMPAD5}","p5")
    HotKeySet ( "{NUMPAD6}","p6")
    HotKeySet ( "{NUMPAD7}","p7")
    HotKeySet ( "{NUMPAD8}","p8")
    HotKeySet ( "{NUMPAD9}","p9")
    HotKeySet ( "{NUMPAD0}","p0")
    HotKeySet ( "{NUMPADADD}","po")
    HotKeySet ( "{NUMPADSUB}","pi")
    HotKeySet ( "{NUMPADMULT}","pm")
    HotKeySet ( "{ESC}", "Terminate")

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    While 1
    Sleep(100)
    WEnd
    ;####################################

    [/autoit] [autoit][/autoit] [autoit]

    Func p1()
    run ($1)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func p2()
    run ($2)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func p3()
    run ($3)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func p4()
    run ($4)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func p5()
    run ($5)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func p6()
    run ($6)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func p7()
    run ($7)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func p8()
    run ($8)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func p9()
    run ($9)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func p0()
    run ($0)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func po()
    MsgBox(0,"office.HOTkeys-Programme","1. " & $n1 & @CRLF & "2. " & $n2 & @CRLF & "3. " & $n3 & @CRLF & "4. " & $n4 & @CRLF & "5. " & $n5 & @CRLF & "6. " & $n6 & @CRLF & "7. " & $n7 & @CRLF & "8. " & $n8 & @CRLF & "9. " & $n9 & @CRLF & "0. " & $n0)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func pi()
    run ($standartpfadmenue)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func pm()
    run ($standartpfad)
    exit
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func Terminate()
    Exit 0
    EndFunc

    [/autoit]

    danke in vorhinein

    Edit BugFix: Bitte Spoiler verwenden!

    • Offizieller Beitrag

    Als erstes: Schau dir mal die Funktion IniReadSection() an. Würde dir etliches an Code ersparen ;)

    Ich würde dir eigentlich davon abraten Hotkeys für eine einzelne Taste festzulegen. z.B. wegen genau der Probleme, die du jetzt hast - die ursprüngliche Tastenfunktion soll ja nicht verloren gehen.
    Vielleicht besser für Programmaufrufe: "p" + "1".... usw.

  • also erst mal danke...und sorry wegen der spoiler.
    wenn ich das richtig versteh meinst du ich soll das programm abrufen und gleichzeitig 1 oder so schreiben!
    das sit nicht wirklic hdas was ich will aber ich könnte-

    Spoiler anzeigen

    While 1
    $num = DllCall("user32.dll","long","GetKeyState","long",0x90)
    If $num[0] = 1 Then
    $a = "1"
    Else
    $a = "0"
    EndIf

    if $a = "0" Then
    ToolTip("aktiv",0,0,)
    sleep(200)
    $aktion1 = run($p1)
    ElseIf $a = "1" Then
    ToolTip("inaktiv",0,0,)
    sleep(200)
    $aktion1 = send("1")
    endif
    WEnd

    Func p1()
    $aktion
    EndFunc

    -machen dann sollte es gehen oder? ich versuchs einfach mal^^

    thx!

  • Hallo.

    @Hollywood: In Zeile 5 überschreibst du die Variable $standartpfad aus Zeile 3. ?(

    Ansonsten find die Idee zum Programm gut. Hab zwar schon einiges umgeändert, damit's so funktioniert, wie du's willst. Aber ganz krieg ich's net hin. Steh heut irgendwie auf'm Schlauch, sorry. :hammer:

    mfg, fee.

  • haha löl! hab ich noch garnicht bemerkt.....macht eigentlich nix...ist kein so dringendes projetk und funktionieren tut es ja. man kann es ja eh über die taskleiste pausieren:-)
    ic hschreibe nebenbei an einer art chat der über eine .inidatei auf einem netzlaufwerk nachrichten austauscht. wen man was schreibt wird es in die datei geschrieben und alle 10 sekunden wird aktualisiert. es funktioniert in dieser weise leider nur in meinel lehrbetriebt. dort liegt es auf einem laufwerk auf das nur wir lehrlinge zugriff haben. aber sonst. Esgiebt auch sowas wie ne abwesenheits notiz und eine onlineanzeige...weis nicht ob sowas auch wer andrer brauchen kann(vileicht für ein Heimnetzwerk)...Oh man ich schweif ja total ab...