HotKeySet löst ohne Tastendruck eine Funktin aus.

  • Hallo,
    ich schreibe gerade ein kleines Tool:

    [autoit]

    ;~ #NoTrayIcon
    HotKeySet ("^A", _SciTEOpen())

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

    While 1
    Sleep (10)
    WEnd

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

    Func _SciTEOpen()
    $Source = _GetScript()
    Run(RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\AutoIt v3\AutoIt","InstallDir") & "\SciTE\SciTE.exe")
    Send ("^a")
    Send ("{DEL}")
    Send ($Source, 1)
    Send ("{F5}")
    EndFunc

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

    Func _GetScript()
    $Script = ClipGet()
    If $Script = "" Then
    MsgBox (0, "Error", "Kein Skript in der Zwischenablage!")
    Exit
    EndIf
    Return $Script
    EndFunc

    [/autoit]

    Diese Send Geschichte ist mir etwas zu unpräzise !
    Gibt es eine Möglichkeit das Send irgendwie zu ersetzten?

    Außerdem startet die Funktion _SciTEOpen() sofort, wenn ich das Skript starte.
    Aber ich habe die Tasten gar nicht gedrückt?
    Irgendwas stimmt da nicht.

    Vielleicht kann mir jemand helfen ^^

  • [autoit]

    HotKeySet ("^A", _SciTEOpen())

    [/autoit]
    [autoit]

    Send ("^a")

    [/autoit]

    Ich glaub, das erklärt alles...
    Machs besser so:

    Spoiler anzeigen
    [autoit]

    ;~ #NoTrayIcon
    HotKeySet ("^A", _SciTEOpen())

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

    While 1
    Sleep (10)
    WEnd

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

    Func _SciTEOpen()
    HotKeySet ("^A")
    $Source = _GetScript()
    Run(RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\AutoIt v3\AutoIt","InstallDir") & "\SciTE\SciTE.exe")
    Send ("^a")
    Send ("{DEL}")
    Send ($Source, 1)
    Send ("{F5}")
    HotKeySet ("^A", _SciTEOpen())
    EndFunc

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

    Func _GetScript()
    $Script = ClipGet()
    If $Script = "" Then
    MsgBox (0, "Error", "Kein Skript in der Zwischenablage!")
    Exit
    EndIf
    Return $Script
    EndFunc

    [/autoit]
    Spoiler anzeigen

    Grundkenntnisse in: C++, JavaScript
    Sehr gute Kenntnisse: PHP, JAVA, C und näturlich AutoIt


    Klaviatur, Anhang UDF, GDI+ Mühle

    Zitat

    "Wenn einen um 20h der Pizzadienst anruft und fragt, ob man's nur vergessen hat und ob man das gleiche
    möchte wie immer -- dann sollte man sein Bestellverhalten evtl überdenken"

  • Oh wei.
    Jetzt hat sich bei mir gerade ein paar mal Scite geöffnet und meine Zwischenablage reinkopiert.
    Jetzt geht alles den Bach runter ^^

  • Bei mir auch...
    Ist ziemlich nervig, und aus irgendeinem Grund klappt STRG+z nicht mehr :(

    Spoiler anzeigen

    Grundkenntnisse in: C++, JavaScript
    Sehr gute Kenntnisse: PHP, JAVA, C und näturlich AutoIt


    Klaviatur, Anhang UDF, GDI+ Mühle

    Zitat

    "Wenn einen um 20h der Pizzadienst anruft und fragt, ob man's nur vergessen hat und ob man das gleiche
    möchte wie immer -- dann sollte man sein Bestellverhalten evtl überdenken"

  • Wenn du noch das Leerzeichen vor _SciTEOpen wegmachst, dürfte das die Lösung sein ;)

    @PokerFace: wenn du nur ein Script ausführen willst, dann doch lieber so?

    Spoiler anzeigen
    [autoit]

    HotKeySet("^A", "RunScript")

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

    While Sleep(10)
    WEnd

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

    Func RunScript()
    Local $sPath = @TempDir & "\~tempscript", $iCnt
    While FileExists($sPath & $iCnt & ".au3") * Sleep(10)
    $iCnt += 1
    WEnd
    Local $sPath = $sPath & $iCnt & ".au3"
    FileWrite($sPath, ClipGet())
    RunWait('"' & @AutoItExe & '" /AutoIt3ExecuteScript "' & $sPath & '"')
    Sleep(100)
    While FileExists($sPath) * Sleep(10)
    FileDelete($sPath)
    WEnd
    EndFunc ;==>RunScript

    [/autoit]