Script mit Tastenenkombination Text Erstellen?

  • hi also probier grade mit autoit rum aber weiß leider nich alle befehele genau und wie man sie verbindet

    hab mal das grobe fertig, bzw meine idee

    HotKeySet ( "{F10}" , "Start" ) ; start
    HotKeySet ( "{F11}" , "End ) ; ende des scripts


    HotKeySet ( "STRG 1" ) ; mit strg + 1 soll der text 99000 da stehen
    Send("{down}") ;taste drücken
    Send("{up}") ; taste loslassen
    Sleep(1) ; text wird in 1 milsec eingegeben
    send ("99000") ; text bzw zahlen die geschreiben werden sollen


    ich will ein script starten mit f10 beenden mit f11

    und das mit verscheidenen tastenkombinationen text geschreiben wird
    hier STRG+1 = 99000

    kann mir bitte jemand weiterhelfen und sagen wie ich das hinbekomme das er nicht gleioch startet und wie die richtighen bezeichnung für die ganzen sachen sind das es funktioniert?

    danke

    ps.: hab gestern 3h prbiert und alles durchgelsen aber weiter weiß ich nich :(

    • Offizieller Beitrag

    Du mußt natürlich die angegebenen Funktionen für die Hotkeys auch erstellen.
    HotKeySet(Tastenkombi, Funktion)

    Spoiler anzeigen
    [autoit]

    HotKeySet ( "{F10}" , "Start" ) ; start
    HotKeySet ( "{F11}" , "End" ) ; ende des scripts
    HotKeySet ( "^1", "sendText" ) ; mit strg + 1 soll der text 99000 da stehen

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

    Func Start()
    ; Code
    EndFunc

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

    Func End()
    ; Code
    EndFunc

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

    Func sendText()
    ; Code
    EndFunc

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

    ; den folgenden Code, dann in die entsprechende Funktion, wobei ich nicht weiß, was die Pfeiltasten sollen:
    Send("{down}") ;taste drücken ### Falsch ==> Pfeiltaste abwärts wird gedrückt
    Send("{up}") ; taste loslassen ### Falsch ==> Pfeiltaste aufwärts wird gedrückt
    Sleep(1) ; text wird in 1 milsec eingegeben # so kurze Pause gibt es nicht
    send ("99000") ; text bzw zahlen die geschreiben werden sollen

    [/autoit]


    Nebenbei: Das war mein Post Nr. 2000

  • Moin,

    also HotKeySet setzt sich aus einer Tastenkombination und einer Funktion zusammen, sprich bei deinen Skript wäre F10 = Aufruf von Funktion Start.
    HotKeySet ( "STRG 1" ) geht also gar nicht, das müsste sowas sein wie HotKeySet ( "^1","SchreibeText" ) damit bei STRG+1 die Funktion SchreibeText aufgerufen wird.
    Send("{down}") und Send("{up}") bedeuten nicht Taste drücken und loslassen sondern Pfeiltaste runter und hoch.
    Sleep(1) ist eine Pause von einer ms, die Eingabegeschwindigkeit wird über Opt gesteuert (siehe Hilfe).
    send ("99000") Das sendet 99000 an das derzeit aktive Fenster.

    Zu deinem Vorhaben, schau dir erst mal in der Hilfe oder hier im Forum Skripte mit Funktionen und HotKeySet an und die Sachen die ich oben geschrieben habe, damit solltest du schon ein gutes Stückchen weiter kommen. Wenn dann noch Fragen sind, immer posten :)

    EDIT: Warum ist der BugFix IMMER schneller :(, nebenbei Glückwunsch zum 2.000 Posting :)

    Mfg
    Jens (McPoldy)

    Twitter: jkroeger

    Denn die Dinge, die wir erst lernen müssen, bevor wir sie tun, lernen wir beim Tun.(Aristoteles)

  • Hallo td1000,

    ich hab das mal schnell hingebastelt. Denke das hilft dir weiter.

    [autoit]

    Opt("GUIOnEventMode", 1) ; mit dieser Option kannst Du Funktionen aufrufen

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

    Send("#r")
    WinWaitActive("Ausführen")
    Send("notepad.exe{Enter}")
    WinWaitActive("Unbenannt -")
    Send("Today's time/date is {F5}")

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

    HotKeySet ("^1","meine_funktion" ) ; mit strg + 1 soll der text 99000 da stehen
    While 1 ; Schleife die wartet, damit Programm nicht beendet wird
    Sleep(1)
    WEnd
    Func meine_funktion()
    ;~ Send("{down}") ;taste drücken ????? unnötig
    ;~ Send("{up}") ; taste loslassen ????? unnötig
    ;~ Sleep(1) ; text wird in 1 milsec eingegeben ????? unnötig
    send ("{ENTER}99000") ; text bzw zahlen die geschreiben werden sollen
    EndFunc

    [/autoit]

    Wie McPoldy schon sagt, kräftig die Hilfe lesen....

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

    • Offizieller Beitrag
    [autoit]

    Send("#r")
    WinWaitActive("Ausführen")
    Send("notepad.exe{Enter}")

    [/autoit]

    Warum so kompliziert?

    [autoit]

    ShellExecute("notepad")

    [/autoit]

    ;)

    [autoit]

    Opt("GUIOnEventMode", 1) ; mit dieser Option kannst Du Funktionen aufrufen

    [/autoit]

    Kann man so nicht stehen lassen. Funktionen kannst du immer aufrufen. Der OnEventMode sorgt dafür, dass du die Events nicht per GUIGetMsg() abfragen mußt, sondern direkt verarbeiten kannst.
    "Wie McPoldy schon sagt, kräftig die Hilfe lesen...." :D

  • BugFix ,

    [autoit]

    Opt("GUIOnEventMode", 1) ; mit dieser Option kannst Du Funktionen aufrufen

    [/autoit]


    hast natürlich Recht, hab das unbedacht nur so schnell dahinter geschrieben...
    wollte nur eine Erklärung liefern, warum ich den Befehl verwendet habe.
    Wie du sagst werde auch ich die Hilfe nächstesmal etwas genauer lesen...

    [autoit]

    Send("#r")
    WinWaitActive("Ausführen")
    Send("notepad.exe{Enter}")

    [/autoit]


    den Code hab ich aus der Original engl. Hilfe kopiert (Send) und nur die Befehle für Notepad (deutsch) angepasst,
    um den Send-Befehl zu verdeutlichen. ;)

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • Du musst aber nicht NOTEPAD benutzen um in eine Datei zu schreiben ...

    Spoiler anzeigen
    [autoit]

    Global $date = @MDAY & @MON & @YEAR & '-' & @HOUR & @MIN & @SEC
    Global $hFile = FileOpen(@DesktopDir & '\' & $date & '.log', 2)

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

    ; Hotkey zum Scriptstart.
    ; wird nicht das tun was Du versuchen möchtest ...
    ;~ HotKeySet('{F10}', 'StartScript')
    ; Tip: Verknüpfung erstellen - Desktop oder sonstwo - und
    ; in den Eigenschaften Tastenkombination F10 setzen.

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

    ; Hotkey zum Beenden des Script's.
    HotKeySet('{F11}', 'Terminate')

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

    ; Hotkey zum Textschreiben.
    HotKeySet('^1', 'WriteText')

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

    While 1

    Sleep(250)

    WEnd

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

    Func WriteText()

    ; Text aus Zwischenablage schreiben
    FileWrite($hFile, ClipGet())

    EndFunc

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

    Func Terminate()

    FileClose($hFile)
    Exit

    EndFunc

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


    Gruß
    Greenhorn


  • naja das soll nich für notpad sein sonder für ein spiel

    hab mal geguckt und soweit gehts auch ganz gut

    hier mal zum zeigen:

    Opt("GUIOnEventMode", 1) ; mit dieser Option kannst Du Funktionen aufrufen

    HotKeySet ("^1","meine_funktion1" ) ; mit strg + 1 soll der text 99000 da stehen
    HotKeySet ("^2","meine_funktion2" ) ; mit strg + 2 soll der text 998000 da stehen
    HotKeySet ("^3","meine_funktion3" ) ; mit strg + 3 soll der text 8800 da stehen
    While 1 ; Schleife die wartet, damit Programm nicht beendet wird
    Sleep(1)
    WEnd
    Func meine_funktion1()
    send ("{ENTER}99000{ENTER}") ; text bzw zahlen die geschreiben werden sollen1
    EndFunc

    Func meine_funktion2()
    send ("{ENTER}998000{ENTER}") ; text bzw zahlen die geschreiben werden sollen2
    EndFunc

    Func meine_funktion3()
    send ("{ENTER}8800{ENTER}") ; text bzw zahlen die geschreiben werden sollen3
    EndFunc

    hab noch mehr tastenkombinatioenn dazu gemacht und danach ein ENTER da wird der betrag gleich gespeichert, funtkioniert in winxp schonmal gut! habs im spiel nich getestet aber is ja das selbe so in der art

    ich würde es gern noch etwas schicker machen, weiß nich ob das zu komplieziert wird mit einer oberfläche wo man einen betrag eingeben kann bzw zuteilen für ein hotkey und den speichern, so windowsoberfläche

    is das zu schwierig?

    aber erstmal VIELEN HERZLICHEN DANK für die schnelle und erfolgreiche hilfe!!!!! ;)

  • ja ein problem hab ich noch wie kann ich das mahcen das der text langsamer eingegen wird, so wie man normal schreibt zb

    weil im spiel hängt sich das dann auf und man kann nichts mehr machen, geht 3-5 mal zu machen und dann hängt das spiel fest

    ? denk mal das liegt an der geschwindigkeit irgendwie

    wo muss ich den sleep () eingeben?


    Opt("GUIOnEventMode", 1) ; mit dieser Option kannst Du Funktionen aufrufen


    HotKeySet ("^1","meine_funktion1" ) ; mit strg + 1 soll der text 99000 da stehen

    HotKeySet ("^2","meine_funktion2" ) ; mit strg + 2 soll der text 998000 da stehen

    HotKeySet ("^3","meine_funktion3" ) ; mit strg + 3 soll der text 8800 da stehen

    While 1 ; Schleife die wartet, damit Programm nicht beendet wird

    Sleep(1)

    WEnd

    Func meine_funktion1()

    send ("{ENTER}99000{ENTER}") ; text bzw zahlen die geschreiben werden sollen1

    EndFunc


    Func meine_funktion2()

    send ("{ENTER}998000{ENTER}") ; text bzw zahlen die geschreiben werden sollen2

    EndFunc


    Func meine_funktion3()

    send ("{ENTER}8800{ENTER}") ; text bzw zahlen die geschreiben werden sollen3

    EndFunc

  • Mit den 2 Funktionen:

    [autoit]

    OPt("SendKeyDelay",WertIn Millisekunden)
    OPt("SendKeyDownDelay",WertIn Millisekunden)

    [/autoit]
    Zitat

    SendKeyDelay Alters the the length of the brief pause in between sent keystrokes.
    Time in milliseconds to pause (default=5). Sometimes a value of 0 does not work; use 1 instead.
    SendKeyDownDelay Alters the length of time a key is held down before being released during a keystroke. For applications that take a while to register keypresses (and many games) you may need to raise this value from the default.
    Time in milliseconds to pause (default=5).

  • also das hat alles funktioniert, klappt super, DANKE euch allen

    hier mal der auszug!

    #cs ----------------------------------------------------------------------------

    AutoIt Version: 1.00
    Author: td1000

    Script Function:
    FastShopHelper

    #ce ----------------------------------------------------------------------------

    Opt("GUIOnEventMode", 1) ; mit dieser Option kannst Du Funktionen aufrufen
    OPt("SendKeyDelay",10) ; geschwindigkeit
    OPt("SendKeyDownDelay",10) ; geschwindigkeit
    HotKeySet ("{F1}","meine_funktion1" ) ; soll der text 99000 da stehen
    HotKeySet ("{F2}","meine_funktion2" ) ; soll der text 998000 da stehen
    HotKeySet ("{F3}","meine_funktion3" ) ; soll der text 9900 da stehen
    HotKeySet ("{F4}","meine_funktion4" ) ; soll der text 8800 da stehen
    HotKeySet ("{F5}","meine_funktion5" ) ; soll der text 5500 da stehen
    HotKeySet ("{F6}","meine_funktion6" ) ; soll der text 4900 da stehen
    HotKeySet ("{F7}","meine_funktion6" ) ; soll der text 4900 da stehen
    HotKeySet ("{F8}","meine_funktion6" ) ; soll der text 220000 da stehen

    While 1 ; Schleife die wartet, damit Programm nicht beendet wird
    Sleep(1)
    WEnd
    Func meine_funktion1()
    send ("99000{ENTER}") ; text bzw zahlen die geschreiben werden sollen1
    EndFunc

    Func meine_funktion2()
    send ("980000{ENTER}") ; text bzw zahlen die geschreiben werden sollen2
    EndFunc

    Func meine_funktion3()
    send ("9900{ENTER}") ; text bzw zahlen die geschreiben werden sollen3
    EndFunc

    Func meine_funktion4()
    send ("8800{ENTER}") ; text bzw zahlen die geschreiben werden sollen4
    EndFunc

    Func meine_funktion5()
    send ("5500{ENTER}") ; text bzw zahlen die geschreiben werden sollen5
    EndFunc

    Func meine_funktion6()
    send ("4900{ENTER}") ; text bzw zahlen die geschreiben werden sollen6
    EndFunc

    Func meine_funktion7()
    send ("999{ENTER}") ; text bzw zahlen die geschreiben werden sollen7
    EndFunc

    Func meine_funktion8()
    send ("220000{ENTER}") ; text bzw zahlen die geschreiben werden sollen8
    EndFunc


    ich wollt jetzt gern so eine oberfläche machen wo man die verscheiden funk, einstellen kann, bzw . das man eingibt was für ein wert da stehen soll

  • das funktioniert mit GUICreate()

    EingabeBoxen: GuiCtrlCreateInput

    Einfach in der Hilfe unter dem Reiter "Index" die Begriffe eingeben .....

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)