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?
hotkeyset problem
-
- [ gelöst ]
-
93lucas -
18. August 2010 um 20:57 -
Geschlossen -
Erledigt
-
-
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
[/autoit][autoit][/autoit][autoit]
Sleep(100)
WEndFunc _Go()
[/autoit][autoit][/autoit][autoit]
TrayTip("","Hotkey a freigegeben, a kann nun verwendet werden",20)
HotKeySet("{a}")
HotKeySet("{b}","_Pause")
EndFuncFunc _Pause()
[/autoit][autoit][/autoit][autoit][/autoit]
TrayTip("","Hotkey a gesetzt, a kann nun nicht mehr verwendet werden",20)
HotKeySet("{b}")
HotKeySet("{a}","_Go")
EndFunc -
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 ) -
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
[/autoit] [autoit][/autoit] [autoit]
If _IsPressed(41,$hdll) Then _Go() ;Falls A gedrückt
Sleep(50)
WEnd
DllClose($hdll)Func _Go()
[/autoit]
MsgBox(0,"","A gedrückt"&@CRLF&"A im Editor angekommen ;)")
EndFunc -
Kann man bei _ispressed eigentlich zwischen groß und klein schreibung unterscheiden?
-
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 )
[autoit]
Lies dir die Hilfe zuHotKeySet
[/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
-
Kann man bei _ispressed eigentlich zwischen groß und klein schreibung unterscheiden?
Nicht direkt. Du könntest abfragen ob die Umschalttaste gedrückt ist und dann weiterprüfen mit _IsPressed .
Wenn ich wieder @home bin dann mach ich dir nen Bsp.
-
bekomms ned hin mit umschalt warte auf beispiel
[autoit]
Edit:
Habs doch geschafft:#include <Misc.au3>
[/autoit][autoit][/autoit][autoit]$dll = DllOpen("user32.dll")
[/autoit][autoit][/autoit][autoit]While 1
[/autoit]
Sleep ( 250 )
If _IsPressed("41", $dll) And _IsPressed ("10", $dll) Then
MsgBox (0,"A","A wurde gedrückt")
EndIf
WEnd
DllClose($dll)aber vielleicht gibts ja ne bessere methode, warte auf beispiel
-
Also ich habs so gelöst
[autoit]#include <Misc.au3>
[/autoit]
;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)