hallo leute.
hätte da ein kleines Problem.
und zwar will ich in ein programm von mir optionen einbauen, sodass die user funktionen auf beliebige tasten legen können. ähnlich wie in jeden x-beliebigen spiel quasi.
Erklärung am Spiel-Bsp:
man klickt auf ein Label, nennen wir es mal "Springen" und dann kann man sich die "Springen"-Funktion auf eine Taste legen. d.h. die zuerst eingegebene taste wird der Hotkey, sagen wir mal "Space". Dann wird "Schleichen" angeklickt, wenn der User jetzt wieder "Space" auswählt soll es hier übernommen werden und bei "Springen" gelöscht.
Die meisten werden ja sowas in der art kennen.
Wichtig ist:
-Nicht alle Tasten können verwendet werden (Alt, windows,... gehen nicht)
Ich hab auch nen einigermaßen funktionierenden ansatz nur is das ganze sehr schlampig und kann bestimmt verbessert werden.
Die vereinfachte version:
Spoiler anzeigen
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <Misc.au3>
#Region ### START Koda GUI section ### Form=
GUICreate('Form1', 160, 90)
$input1 = GUICtrlCreateInput('', 50, 16, 100, 21,
BitOR($ES_AUTOHSCROLL,$ES_READONLY))
$erase = GUICtrlCreateButton('löschen', 16, 45, 129, 33, $WS_GROUP)
$HE = GUICtrlCreateLabel('HE', 16, 16, 29, 24)
GUICtrlSetFont(-1, 12, 400, 0, 'MS Sans Serif')
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $erase
GUICtrlSetData($input1, '')
Case $HE
Pressed()
EndSwitch
WEnd
Func Pressed()
$dll = DllOpen("user32.dll")
MouseUp("left")
GUICtrlSetData($input1, '')
GUICtrlSetState($HE, $GUI_DISABLE)
GUICtrlSetState($erase, $GUI_DISABLE)
While GUICtrlRead($input1) = ''
For $i = 1 To IniRead(@ScriptDir & '\IsPressed.ini', 'General', 'keys', '124')
If _IsPressed(IniRead(@ScriptDir & '\IsPressed.ini', $i, 'id', '00')) Then
GUICtrlSetData($input1, IniRead(@ScriptDir & '\IsPressed.ini', $i, 'Anzeige', 'Error'))
EndIf
Next
WEnd
GUICtrlSetState($HE, $GUI_ENABLE)
GUICtrlSetState($erase, $GUI_ENABLE)
DllClose($dll)
EndFunc
Bin für jeden verbesserungsvorschlag dankbar