HotKeySet Problem

  • Hallo, erstmal ich bin neu hier und habe ein Problem mit der HotKeySet funktion

    [autoit]


    For $i = 1 To 9 Step 1
    HotKeySet($keys[$i], "schreiben($i)")
    Next

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

    Func schreiben($h)
    Send(GUICtrlRead($text[$h]))
    EndFunc

    [/autoit]

    Bei HotKeySet erkennt er die Funktion "schreiben($i)" nicht, und ich brauche aber bei dieser Funktion Parameter, und ich habe keine ahnung wie ich das lösen kann

    ich hoffe mir kann hier jemand helfen ?(


    Mit freundlichen Grüßen
    morfi93

    3 Mal editiert, zuletzt von morfi93 (31. August 2007 um 20:37)

  • "schreiben(" & $i & ")"

    das "step 1" kannst du weglassen

    Einmal editiert, zuletzt von winikator24654 (21. August 2007 um 23:34)

  • das funkt aber nicht, ich habe das auch schon ausprobiert, es erkennt dann trotzdem die Funktion nicht

  • nein sind sie nicht
    ich habe nur einen kleinen fehler gemacht
    sorry

    Einmal editiert, zuletzt von morfi93 (21. August 2007 um 23:41)

  • lies mal in der Hilfe nach...

    "The called function can not be given parameters. They will be ignored."

    es ist also so nicht möglich

    vieleicht klappt das, indem du am anfang der funktion schreiben mit "_IsPressed" abfragst, welche taste verwendet wurde, und entsprchend die variable setzt
    edit: ja so gehts - nur wenn du es mehrach per hotkey startest vieleicht nicht

    3 Mal editiert, zuletzt von winikator24654 (21. August 2007 um 23:50)

  • also ich erkläre jetzt mal mein Programm,

    ich habe ein GUIFenster erstellt, das am anfang erscheint und in diesem GUIFenster sind insgesamt 18 Inputfelder. In den ersten neun Feldern sollen die Tasten bestimmt werden, mit denen der Text in den nächsten 9 Feldern geschrieben werden soll
    Also eine art von schreibprogramm

    Ich gebe zum beispiel auf in eines der linken felder 1 ein und im Feld was gegenüber ist schreibe ich "Hallo"

    dann drücke ich auf speichern und wenn ich dann 1 drücke soll er mir den Text "Hallo" schreiben, egal wo.

    Hier ist einmal mein code

    Spoiler anzeigen

    CODE

    [autoit]


    ;------------------------------------------------------- Erstellt ein GUIFenster ---------------------------------------------------------------------
    GUICreate("autowriter", 500, 300, 780, 660)

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

    ;---------------------------------------------------------- Zeigt das GUIFenster an ------------------------------------------------------------------
    GUISetState(@SW_SHOW)

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

    ;-------------------------------------------------- Input Felder werden erstellt ---------------------------------------------------------------------
    Dim $nummer[10]
    Dim $text[10]
    $nummer[1] = GUICtrlCreateInput("1", 10, 10, 20, 20)
    $nummer[2] = GUICtrlCreateInput("2", 10, 35, 20, 20)
    $nummer[3] = GUICtrlCreateInput("3", 10, 60, 20, 20)
    $nummer[4] = GUICtrlCreateInput("4", 10, 85, 20, 20)
    $nummer[5] = GUICtrlCreateInput("5", 10, 110, 20, 20)
    $nummer[6] = GUICtrlCreateInput("6", 10, 135, 20, 20)
    $nummer[7] = GUICtrlCreateInput("7", 10, 160, 20, 20)
    $nummer[8] = GUICtrlCreateInput("8", 10, 185, 20, 20)
    $nummer[9] = GUICtrlCreateInput("9", 10, 210, 20, 20)

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

    $text[1] = GUICtrlCreateInput("Text", 40, 10, 300, 20)
    $text[2] = GUICtrlCreateInput("text[]", 40, 35, 300, 20)
    $text[3] = GUICtrlCreateInput("text[]", 40, 60, 300, 20)
    $text[4] = GUICtrlCreateInput("text[]", 40, 85, 300, 20)
    $text[5] = GUICtrlCreateInput("text[]", 40, 110, 300, 20)
    $text[6] = GUICtrlCreateInput("text[]", 40, 135, 300, 20)
    $text[7] = GUICtrlCreateInput("text[]", 40, 160, 300, 20)
    $text[8] = GUICtrlCreateInput("text[]", 40, 185, 300, 20)
    $text[9] = GUICtrlCreateInput("text[]", 40, 210, 300, 20)

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

    $Button1 = GUICtrlCreateButton("Speichern", 10, 250, 200)
    $Button2 = GUICtrlCreateButton("Beenden", 230, 250, 200)

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

    HotKeySet("{F1}", "show")
    HotKeySet("{F2}", "hide")

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

    Func show()
    GUISetState(@SW_SHOW)
    EndFunc

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

    Func hide()
    GUISetState(@SW_HIDE)
    EndFunc

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

    Func schreiben($h)
    Send(GUICtrlRead($text[$h]))
    EndFunc

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

    While 1 = 1
    $msg = GUIGetMsg()

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

    If $msg = $Button1 Then
    For $i = 1 to 9 Step 1
    $neu = 'schreiben("")'
    Dim $keys[10]
    $keys[$i] = GUICtrlRead($nummer[$i])
    HotKeySet($keys[$i], "schreiben(" & $i & ")")
    Next
    ElseIf $msg = $Button2 Then
    Exit
    EndIf
    WEnd

    [/autoit]


    Mein Problem ist ich weiß nicht wie ich die Hotkeys einstellen muss, dass das so funktioniert

    Ich hoffe mir kann jemand helfen

    Mit freundlichen Grüßen
    morfi93

  • So, ich habe es jetzt anders gelöst
    ist zwar viel mehr code aber es funktioniert
    ich habe nämlich die ganzen Funktionen gleich von selbst geschrieben

    Vielen Dank nochmal für deine Hilfe

    Spoiler anzeigen
    [autoit]


    ;------------------------------------------------------- Erstellt ein GUIFenster
    GUICreate("autowriter", 500, 300, 780, 660)

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

    ;---------------------------------------------------------- Zeigt das GUIFenster an
    GUISetState(@SW_SHOW)

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

    ;-------------------------------------------------- Input Felder werden erstellt
    Dim $text[10]

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

    $text[1] = GUICtrlCreateInput("Text", 40, 10, 300, 20)
    $text[2] = GUICtrlCreateInput("text[]", 40, 35, 300, 20)
    $text[3] = GUICtrlCreateInput("text[]", 40, 60, 300, 20)
    $text[4] = GUICtrlCreateInput("text[]", 40, 85, 300, 20)
    $text[5] = GUICtrlCreateInput("text[]", 40, 110, 300, 20)
    $text[6] = GUICtrlCreateInput("text[]", 40, 135, 300, 20)
    $text[7] = GUICtrlCreateInput("text[]", 40, 160, 300, 20)
    $text[8] = GUICtrlCreateInput("text[]", 40, 185, 300, 20)
    $text[9] = GUICtrlCreateInput("text[]", 40, 210, 300, 20)

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

    $Button1 = GUICtrlCreateButton("Speichern", 10, 250, 200)
    $Button2 = GUICtrlCreateButton("Beenden", 230, 250, 200)

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

    HotKeySet("{F1}", "show")
    HotKeySet("{F2}", "hide")

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

    ;-------------------------------- Funktion Anzeigen
    Func show()
    GUISetState(@SW_SHOW)
    EndFunc

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

    ;------------------------------ Funktion Verstecken
    Func hide()
    GUISetState(@SW_HIDE)
    EndFunc

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

    ;------------------------------- Funktionen für das Schreiben der Tabellen von 1 bis 9
    Func s1()
    $s1 = GUICtrlRead($text[1])
    Send($s1)
    EndFunc
    Func s2()
    $s2 = GUICtrlRead($text[2])
    Send($s2)
    EndFunc
    Func s3()
    $s3 = GUICtrlRead($text[3])
    Send($s3)
    EndFunc
    Func s4()
    $s4 = GUICtrlRead($text[4])
    Send($s4)
    EndFunc
    Func s5()
    $s5 = GUICtrlRead($text[5])
    Send($s5)
    EndFunc
    Func s6()
    $s6 = GUICtrlRead($text[6])
    Send($s6)
    EndFunc
    Func s7()
    $s7 = GUICtrlRead($text[7])
    Send($s7)
    EndFunc
    Func s8()
    $s8 = GUICtrlRead($text[8])
    Send($s8)
    EndFunc
    Func s9()
    $s9 = GUICtrlRead($text[9])
    Send($s9)
    EndFunc

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

    ;-------------------------------------- Für das Klicken auf die Button
    $msg = GUIGetMsg()

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

    ;------------------------------------- Wenn man auf "Speichern" klickt, dann werden die HotKeySets erstellt
    If $msg = $Button1 then
    For $i = 1 to 9
    $hallo = "s" & String($i)
    HotKeySet($i, $hallo)
    Next
    ;----------------------------------- Wenn man auf "Beenden" klickt, wird das Programm beendet
    ElseIf $msg = $Button2 Then
    Exit
    EndIf

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

    ;-------------------------------------- Funktion für das Schließen des Fesnters und des Programms
    Func schlieen()
    Exit
    EndFunc

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

    ;---------------------------------- HotKeySet für das Schließen
    HotKeySet("{ESC}", "schlieen")

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

    ;------------------------------------- Ist für das ständige anzeigen des Fensters verantwortlich
    While 1=1
    Sleep(100)
    WEnd

    [/autoit]

    Mit freundlichen Grüßen
    morfi93

    Einmal editiert, zuletzt von morfi93 (22. August 2007 um 18:41)

  • ja ich wollte es auchmal versuchen, aber habe es nicht so zusammengebracht
    ^^

    danke für deinen Link
    ich werde mir mal den Script durchlesen