hotkeyset problem

  • HI
    Wenn ich "a" als einen hotkey brauche, sendet er mir das "a" nicht in z.B. einen editor.
    Wie kann ich das machen wenn ich a drücke das die funktion los geht und trotzdem a normal gedrückt wird?

    Einmal editiert, zuletzt von 93lucas (19. August 2010 um 19:12)

  • Hallo,

    Dieser Befehl sollte dir helfen.

    [autoit]

    _IsPressed

    [/autoit]

    oder du sendest bei jedem Funktionsaufruf durch Hotkeyset ein "a"

    [autoit]

    Send("a")

    [/autoit]

    Lg, Fabian

  • kann man das nicht einstellen das hotkeyset die taste für den kleinen augenblick nicht "speert"?

  • Was ist für dich einen kleinen Augenblick?

    Ein Beispiel um Tasten wieder "freizugeben".

    [autoit]

    HotKeySet("{a}","_Go")

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

    While 1
    Sleep(100)
    WEnd

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

    Func _Go()
    TrayTip("","Hotkey a freigegeben, a kann nun verwendet werden",20)
    HotKeySet("{a}")
    HotKeySet("{b}","_Pause")
    EndFunc

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

    Func _Pause()
    TrayTip("","Hotkey a gesetzt, a kann nun nicht mehr verwendet werden",20)
    HotKeySet("{b}")
    HotKeySet("{a}","_Go")
    EndFunc

    [/autoit][autoit][/autoit][autoit][/autoit]
  • ich meinte wenn man die taste a mit einem hotkey benutz ob man dann einstellen kann das die taste a ganz normal gesendet wird (nicht über autoit, sondern normal wie ohne hotkey)
    Und die funktion von dem hotkey angeht(kein problem 8) )

  • Dann bleibt dir nur _IsPressed(), ansonsten lerne ich natürlich gerne dazu :pinch:

    Spoiler anzeigen
    [autoit]

    #include <Misc.au3>

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

    $hdll = DllOpen("user32.dll")

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

    While 1
    If _IsPressed(41,$hdll) Then _Go() ;Falls A gedrückt
    Sleep(50)
    WEnd
    DllClose($hdll)

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

    Func _Go()
    MsgBox(0,"","A gedrückt"&@CRLF&"A im Editor angekommen ;)")
    EndFunc

    [/autoit]
  • ich meinte wenn man die taste a mit einem hotkey benutz ob man dann einstellen kann das die taste a ganz normal gesendet wird (nicht über autoit, sondern normal wie ohne hotkey)Und die funktion von dem hotkey angeht(kein problem 8) )


    Lies dir die Hilfe zu

    [autoit]

    HotKeySet

    [/autoit]

    genau durch, dann verstehst du auch warum HotKey's üblicherweise immer eine 2 oder gar 3-Tasten Kombination sind, dies solltest du auch machen, dabei aber berücksichtigen dass viele Kombinationen in anderen Programmen verwendet werden, die du dann ja um diese Möglichkeit beraubst.

    mfg (Auto)Bert

  • bekomms ned hin mit umschalt :S warte auf beispiel
    Edit:
    Habs doch geschafft:

    [autoit]

    #include <Misc.au3>

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

    $dll = DllOpen("user32.dll")

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

    While 1
    Sleep ( 250 )
    If _IsPressed("41", $dll) And _IsPressed ("10", $dll) Then
    MsgBox (0,"A","A wurde gedrückt")
    EndIf
    WEnd
    DllClose($dll)

    [/autoit]

    aber vielleicht gibts ja ne bessere methode, warte auf beispiel

    Einmal editiert, zuletzt von 93lucas (19. August 2010 um 12:57)

  • Also ich habs so gelöst

    [autoit]

    #include <Misc.au3>
    ;By Sprenger120
    $hDll = DllOpen("user32.dll")
    Dim $Buchstaben[2] = ["ABCDEFGHIJKLMNOPQRSTUVWXYZ", "abcdefghijklmnopqrstuvwxyz"]
    While Sleep(10)
    For $x = 65 To 90
    If _IsPressed("14", $hDll) Or _IsPressed("A0", $hDll) Or _IsPressed("A1", $hDll) Then
    If _IsPressed(Hex($x, 2), $hDll) Then ConsoleWrite(StringMid($Buchstaben[0], $x - 64, 1) & @CRLF)
    Else
    If _IsPressed(Hex($x, 2), $hDll) Then ConsoleWrite(StringMid($Buchstaben[1], $x - 64, 1) & @CRLF)
    EndIf
    Next
    For $x = 48 To 57
    If _IsPressed(Hex($x, 2),$hDll) Then ConsoleWrite(Chr($x) & @CRLF)
    Next
    WEnd
    DllClose($hDll)

    [/autoit]