Problem mit Send und Hotkeyset

  • Nabend Leute,
    ich war jetzt länger nicht mehr aktiv mit AutoIt und habe somit auch gleich mein erstes Problem. undzwar will ich für Photoshop ein Programm schreiben welche mir Shortcuts und tastenkürzel schnell ausführt.

    [autoit]

    HotKeySet ("0", "_kombi0")
    HotKeySet ("1", "_kombi1")
    HotKeySet ("2", "_kombi2")
    HotKeySet ("3", "_kombi3")
    HotKeySet ("4", "_kombi4")
    HotKeySet ("5", "_kombi5")
    HotKeySet ("6", "_kombi6")
    HotKeySet ("7", "_kombi7")
    HotKeySet ("8", "_kombi8")
    HotKeySet ("9", "_kombi9")

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

    HotKeySet ("^0", "_kombi10")
    HotKeySet ("^1", "_kombi11")
    HotKeySet ("^2", "_kombi12")
    HotKeySet ("^3", "_kombi13")
    HotKeySet ("^4", "_kombi14")
    HotKeySet ("^5", "_kombi15")
    HotKeySet ("^6", "_kombi16")
    HotKeySet ("^7", "_kombi17")
    HotKeySet ("^8", "_kombi18")
    HotKeySet ("^9", "_kombi19")

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

    HotKeySet ("^0", "_kombi20")
    HotKeySet ("!1", "_kombi21")
    HotKeySet ("!2", "_kombi22")
    HotKeySet ("!3", "_kombi23")
    HotKeySet ("!4", "_kombi24")
    HotKeySet ("!5", "_kombi25")
    HotKeySet ("!6", "_kombi26")
    HotKeySet ("!7", "_kombi27")
    HotKeySet ("!8", "_kombi28")
    HotKeySet ("!9", "_kombi29")

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

    HotKeySet ("^!0", "_kombi30")
    HotKeySet ("^!1", "_kombi31")
    HotKeySet ("^!2", "_kombi32")
    HotKeySet ("^!3", "_kombi33")
    HotKeySet ("^!4", "_kombi34")
    HotKeySet ("^!5", "_kombi35")
    HotKeySet ("^!6", "_kombi36")
    HotKeySet ("^!7", "_kombi37")
    HotKeySet ("^!8", "_kombi38")
    HotKeySet ("^!9", "_kombi39")

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

    Func _kombi0()
    send ("")
    endfunc
    Func _kombi1()
    send ("")
    endfunc
    Func _kombi2()
    send ("")
    endfunc
    Func _kombi3()
    send ("")
    endfunc
    Func _kombi4()
    send ("")
    endfunc
    Func _kombi5()
    send ("")
    endfunc
    Func _kombi6()
    send ("")
    endfunc
    Func _kombi7()
    send ("")
    endfunc
    Func _kombi8()
    send ("")
    endfunc
    Func _kombi9()
    send ("")
    endfunc
    Func _kombi10()
    sleep (1000)
    send ("Hallo")
    endfunc
    Func _kombi11()
    send ("")
    endfunc
    Func _kombi12()
    send ("")
    endfunc
    Func _kombi13()
    send ("")
    endfunc
    Func _kombi14()
    send ("")
    endfunc
    Func _kombi15()
    send ("")
    endfunc
    Func _kombi16()
    send ("")
    endfunc
    Func _kombi17()
    send ("")
    endfunc
    Func _kombi18()
    send ("")
    endfunc
    Func _kombi19()
    send ("")
    endfunc
    Func _kombi20()
    send ("20")
    endfunc
    Func _kombi21()
    send ("")
    endfunc
    Func _kombi22()
    send ("")
    endfunc
    Func _kombi23()
    send ("")
    endfunc
    Func _kombi24()
    send ("")
    endfunc
    Func _kombi25()
    send ("")
    endfunc
    Func _kombi26()
    send ("")
    endfunc
    Func _kombi27()
    send ("")
    endfunc
    Func _kombi28()
    send ("")
    endfunc
    Func _kombi29()
    send ("")
    endfunc
    Func _kombi30()
    send ("30")
    endfunc
    Func _kombi31()
    send ("")
    endfunc
    Func _kombi32()
    send ("")
    endfunc
    Func _kombi33()
    send ("")
    endfunc
    Func _kombi34()
    send ("")
    endfunc
    Func _kombi35()
    send ("")
    endfunc
    Func _kombi36()
    send ("")
    endfunc
    Func _kombi37()
    send ("")
    endfunc
    Func _kombi38()
    send ("")
    endfunc
    Func _kombi39()
    send ("")
    endfunc

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

    While 1
    sleep (1000)
    WEnd

    [/autoit]


    Wo liegt hier der Fehler, wenn ich drücke passiert nichts wenn ich STRG+ drucke passiert nix und ebenso bei alt. wo ist da der Fehler.

    Dann habe ich noch eine Frage, wie kann ich ein Menü einfügen, welches dann in der Taskleiste sich dann befindet bei dem Icon?

    Danke für eure Hilfe

    Gruß Nismo

  • Du pausierst das Script immer für eine Sekunden, also ist es schon reine glückssache wenn der HotKey dann erkannt wird.

    Mach so dann gehts:

    [autoit]

    While 1
    sleep (100)
    WEnd

    [/autoit]



    Dann habe ich noch eine Frage, wie kann ich ein Menü einfügen, welches dann in der Taskleiste sich dann befindet bei dem Icon?

    [autoit]

    TrayCreateMenu

    [/autoit]

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • okay danke, wie muss ich die Tasten einstellen, damit diese auf dem Nummernblock laufen?

  • Spoiler anzeigen
    [autoit]

    HotKeySet ("0", "_kombi0")
    HotKeySet ("1", "_kombi1")
    HotKeySet ("2", "_kombi2")
    HotKeySet ("3", "_kombi3")
    HotKeySet ("4", "_kombi4")
    HotKeySet ("5", "_kombi5")
    HotKeySet ("6", "_kombi6")
    HotKeySet ("7", "_kombi7")
    HotKeySet ("8", "_kombi8")
    HotKeySet ("9", "_kombi9")

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

    HotKeySet ("^0", "_kombi10")
    HotKeySet ("^1", "_kombi11")
    HotKeySet ("^2", "_kombi12")
    HotKeySet ("^3", "_kombi13")
    HotKeySet ("^4", "_kombi14")
    HotKeySet ("^5", "_kombi15")
    HotKeySet ("^6", "_kombi16")
    HotKeySet ("^7", "_kombi17")
    HotKeySet ("^8", "_kombi18")
    HotKeySet ("^9", "_kombi19")

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

    HotKeySet ("!0", "_kombi20")
    HotKeySet ("!1", "_kombi21")
    HotKeySet ("!2", "_kombi22")
    HotKeySet ("!3", "_kombi23")
    HotKeySet ("!4", "_kombi24")
    HotKeySet ("!5", "_kombi25")
    HotKeySet ("!6", "_kombi26")
    HotKeySet ("!7", "_kombi27")
    HotKeySet ("!8", "_kombi28")
    HotKeySet ("!9", "_kombi29")

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

    HotKeySet ("^!0", "_kombi30")
    HotKeySet ("^!1", "_kombi31")
    HotKeySet ("^!2", "_kombi32")
    HotKeySet ("^!3", "_kombi33")
    HotKeySet ("^!4", "_kombi34")
    HotKeySet ("^!5", "_kombi35")
    HotKeySet ("^!6", "_kombi36")
    HotKeySet ("^!7", "_kombi37")
    HotKeySet ("^!8", "_kombi38")
    HotKeySet ("^!9", "_kombi39")

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

    Func _kombi0()
    send ("a")
    endfunc
    Func _kombi1()
    send ("")
    endfunc
    Func _kombi2()
    send ("")
    endfunc
    Func _kombi3()
    send ("")
    endfunc
    Func _kombi4()
    send ("")
    endfunc
    Func _kombi5()
    send ("")
    endfunc
    Func _kombi6()
    send ("")
    endfunc
    Func _kombi7()
    send ("")
    endfunc
    Func _kombi8()
    send ("")
    endfunc
    Func _kombi9()
    send ("")
    endfunc
    Func _kombi10()
    send ("Hallo")
    endfunc
    Func _kombi11()
    send ("")
    endfunc
    Func _kombi12()
    send ("")
    endfunc
    Func _kombi13()
    send ("")
    endfunc
    Func _kombi14()
    send ("")
    endfunc
    Func _kombi15()
    send ("")
    endfunc
    Func _kombi16()
    send ("")
    endfunc
    Func _kombi17()
    send ("")
    endfunc
    Func _kombi18()
    send ("")
    endfunc
    Func _kombi19()
    send ("")
    endfunc
    Func _kombi20()
    send ("20")
    endfunc
    Func _kombi21()
    send ("")
    endfunc
    Func _kombi22()
    send ("")
    endfunc
    Func _kombi23()
    send ("")
    endfunc
    Func _kombi24()
    send ("")
    endfunc
    Func _kombi25()
    send ("")
    endfunc
    Func _kombi26()
    send ("")
    endfunc
    Func _kombi27()
    send ("")
    endfunc
    Func _kombi28()
    send ("")
    endfunc
    Func _kombi29()
    send ("")
    endfunc
    Func _kombi30()
    send ("30")
    endfunc
    Func _kombi31()
    send ("")
    endfunc
    Func _kombi32()
    send ("")
    endfunc
    Func _kombi33()
    send ("")
    endfunc
    Func _kombi34()
    send ("")
    endfunc
    Func _kombi35()
    send ("")
    endfunc
    Func _kombi36()
    send ("")
    endfunc
    Func _kombi37()
    send ("")
    endfunc
    Func _kombi38()
    send ("")
    endfunc
    Func _kombi39()
    send ("")
    endfunc

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

    While 1
    sleep (1000)
    WEnd

    [/autoit]

    Nein das stimmt nicht, sleep beeinfluss HotKeys nicht, die gehen immer, probier mal so mein script ich habe es mal so Probier und es geht

    mfg. Jam00


  • also es läuft schon nur wäre es besser wenn es auf dem Nummerblock läuft wie kann ich es ansteuern das die tasten vom Nummerblock den Befehl dann ausführen.

  • Zitat

    wie muss ich die Tasten einstellen, damit diese auf dem Nummernblock laufen?


    Mit Nummernblock meinst du Numpad oder? wen ja is die sache einfach :D

    [autoit]

    HotKeySet ("{NUMPAD0}", "_kombi0") ; Numpad 0
    HotKeySet ("{NUMPAD1}", "_kombi1") ; Numpad 1
    HotKeySet ("{NUMPAD2}", "_kombi2") ; Numpad 2
    HotKeySet ("{NUMPAD3}", "_kombi3") ; Numpad 3
    HotKeySet ("{NUMPAD4}", "_kombi4") ; Numpad 4
    HotKeySet ("{NUMPAD5}", "_kombi5") ; Numpad 5
    HotKeySet ("{NUMPAD6}", "_kombi6") ; Numpad 6
    HotKeySet ("{NUMPAD7}", "_kombi7") ; Numpad 7
    HotKeySet ("{NUMPAD8}", "_kombi8") ; Numpad 8
    HotKeySet ("{NUMPAD9}", "_kombi9") ; Numpad 9
    HotKeySet ("{NUMPADMULT}", "_kombi10") ; Multiplizieren auf Numpad / Numpad *
    HotKeySet ("{NUMPADADD}", "_kombi11") ; Addieren auf Numpad / Numpad +
    HotKeySet ("{NUMPADSUB}", "_kombi12") ; Subtrahieren auf Numpad / Numpad -
    HotKeySet ("{NUMPADDIV}", "_kombi13") ; Dividieren auf Numpad / Numpad /
    HotKeySet ("{NUMPADDOT}", "_kombi14") ; Punkt (Komma) auf Numpad / Numpad .(del)
    HotKeySet ("{NUMPADENTER}", "_kombi15") ; Eingabe-Taste auf Numpad / Numpad Enter

    [/autoit]

    Unter HotKeySet Findest du "gleichen Format wie Send()."
    Und Unter Send() Findest du alles was das tastatur Herz Begehrt :D einfach n bissl runter scrollen
    Steht alles in der Hilfe drin :D
    *Die man (nur mal so nebenbei) mit F1 öffnet :D

    Mfg Skilkor

    Edit*
    Vergiss dan bitte nicht das du "NumLock" anhaben musst ^^ sonnst nuzt dir das ganze nichts ^^ :D:D

  • Korrekt. Und meines Wissens nach: Wenn das Sleep auf 1000 gestellt ist, ist es nicht reine "Glückssache", die Funktion wird nach dem verbleibenden Delay ausgeführt.

  • Naja ich muss noch hinzufügen das ein

    [autoit]

    Sleep(100)

    [/autoit]


    den Rechner (Je nach rechner) sehr beanspruchen kann.
    Meines wissen ist ein

    [autoit]

    Sleep(500)

    [/autoit]


    für ein Script das NUR mit

    [autoit]

    HotKeySet

    [/autoit]


    Arbeitet, Völlig ausreichend.
    da wartest du dan vll nicht eine Sec wen du pech hast,sondern max 4ms und die sind für den menschen KAUM nachzuvolziehen :D UND überanspruchst EVT deine Rechner nicht zu Stark :D

  • sleep(100) und sleep(500) machen keinen Unterschied? Das glaubst du doch wohl selber nicht...
    Teste mal das Script:

    [autoit]

    sleep(1000)
    MsgBox(0, "", "")
    sleeP(500)
    MsgBox(0, "", "")
    sleep(100)
    MsgBox(0, "", "")

    [/autoit]


    Merkst du da keinen Unterschied zwischen der ersten und der zweiten und der zweiten und der dritten MsgBox?
    Und sleep(100) beansprucht doch nicht zu sehr den Pc 8| Bei mir reicht ein sleep(10) völlig...

  • AutoIt kratzt es nicht, wenn du nen 10sec Sleep in die While-Schleife einbaust... Er unterbricht auch den Sleep für den Func.

    [autoit]

    HotKeySet ("{NUMPAD0}", "_kombi0") ; Numpad 0
    While 1
    Sleep(10000)
    WEnd

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

    Func _kombi0()
    MSGBOX(0, "", "Test")
    EndFunc

    [/autoit]
    • Offizieller Beitrag

    Verwende nur eine Funktion für die Hotkeys, ist übersichtlicher:

    Spoiler anzeigen
    [autoit]

    For $i = 0 To 9
    HotKeySet($i, '_HKFunc')
    HotKeySet('{NUMPAD' & $i & '}', '_HKFunc')
    HotKeySet('^{NUMPAD' & $i & '}', '_HKFunc')
    HotKeySet('!{NUMPAD' & $i & '}', '_HKFunc')
    HotKeySet('^!{NUMPAD' & $i & '}', '_HKFunc')
    HotKeySet('^' & $i, '_HKFunc')
    HotKeySet('!' & $i, '_HKFunc')
    HotKeySet('^!' & $i, '_HKFunc')
    Next
    HotKeySet('#!e', '_HKFunc') ; Win+Alt+e zum Beenden

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

    While 1
    Sleep(100)
    WEnd

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

    Func _HKFunc()
    Switch @HotKeyPressed
    Case '#!e'
    Exit
    Case '0'
    ; der Send-Code
    Case '^0'

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

    Case '^!0'

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

    Case '{NUMPAD0}'

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

    Case '^{NUMPAD0}'

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

    Case '!{NUMPAD0}'

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

    Case '^!{NUMPAD0}'

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

    ; usw. usf.
    EndSwitch
    EndFunc

    [/autoit]
  • Zitat

    sleep(100) und sleep(500) machen keinen Unterschied? Das glaubst du doch wohl selber nicht...


    Oje, da hats einer garnicht verstanden :S
    nun gut. damit wollt ich Sagen das ein Sleep(500) völlig reicht.

    Zitat

    Und sleep(100) beansprucht doch nicht zu sehr den Pc 8| Bei mir reicht ein sleep(10) völlig...


    naja, wer nicht denken kann,der redet...
    Schonmal dran gedacht das es immernoch leute gibt mit nem richtigen Crap PC???
    Dies sollte man beachte, & wen das der fall SEIN Sollte (Vll nicht bei ihm) kannste ein Sleep(100) grad vergessen,...geschweigen den ein sleep(10)

  • Wenn ich dich richtig verstehe muss ich unter das Case Nur noch Send ("STRG+t") reinmachen und dann läuft es? natürlich noch mit den anderen Tasten also 1-9

    Vielen dank


    Danke an alle für die Hilfe.

  • Alta soll das mal ein Anfänger richtig Verstehen. da ist meine Variante ja wohl die einfachte der einfachen xD so wie mans Lehrnt :D

  • Alta soll das mal ein Anfänger richtig Verstehen. da ist meine Variante ja wohl die einfachte der einfachen xD so wie mans Lehrnt :D

    Wenn ich dich richtig verstehe muss ich unter das Case Nur noch Send ("STRG+t") reinmachen und dann läuft es? natürlich noch mit den anderen Tasten also 1-9

    wie du siehst hat er es verstanden,

    wie du hier auf 4 ms kommst würde mich interessieren und es ist bei diesem Skript wirklich egal wie hoch sleep ist. 10 ms ist der niedrigste Wert alle darunter werden auch als 10 ms genommen. Ein Sleep von 10 beansprucht das System nicht mehr als ein Sleep von 500. Zum testen hier ein Skript:

    Spoiler anzeigen
    [autoit]


    HotKeySet('d' , '_HKFunc')

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

    MsgBox(0,"Sleep-Test","Zeit ist 10 ms")
    _test(10)
    MsgBox(0,"Sleep-Test","Zeit ist 20 ms")
    _test(20)
    MsgBox(0,"Sleep-Test","Zeit ist 50 ms")
    _test(50)
    MsgBox(0,"Sleep-Test","Zeit ist 100 ms")
    _test(100)
    MsgBox(0,"Sleep-Test","Zeit ist 500 ms")
    _test(500)

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

    func _test($sleeptime)
    $j = int(1000/$sleeptime) * 5
    ConsoleWrite($sleeptime & " " & $j & @CRLF)
    for $i=1 to $j
    Sleep($sleeptime)
    Next
    EndFunc

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

    Func _HKFunc()
    MsgBox(0,"","Hotkey gedrückt",1)
    EndFunc

    [/autoit]

    ich kann im Windows-Taskmanager keine Unterschiede der CPU-Auslastung für die kompilierte EXE feststellen, egal welche $sleeptime verwendet wird bei allen 1% und das auf einem Netbook mit Atomprozessor, der ja bekanntlich nicht zu den schnellsten gehört.


    Oje, da hats einer garnicht verstanden :S
    nun gut. damit wollt ich Sagen das ein Sleep(500) völlig reicht.


    naja, wer nicht denken kann,der redet...

    warum denn gleich beleidigend werden, wenn einer anderer Meinung ist,

    mfg (Auto)Bert