Hallo,
hat jemand von euch vielleicht eine Ahnung, wie man mit AutoIt die "Raw Input Data" der Tastatur abfragen kann. In einem englischsprachigen Forum hat schon mal jemand danach gefragt (http://www.autoitscript.com/forum/topic/21…ting-raw-input/), aber es ist leider nichts dabei rausgekommen.
Ich würde gerne ein kleines Programm schreiben, welches es den von Logitech verarschten Kunden (so wie ich einer bin) ermöglicht, die Sondertasten ihrer teuren Tastaturen auch noch unter Windows 7 nutzen zu können (wie Logitech das mal versprochen - aber nie eingehalten hat ). Das gilt natürlich auch für alle anderen nicht mehr unterstützen Marken/Tastaturen. Ich habe jetzt schon sehr lange gewartet, die einschlägigegn Foren gewälzt und diverse Ansätze (inkl. von anderen Leuten entwickelte Software) ausprobiert - es nützt nichts: das Keybord bleibt beschnitten. Ich will es aber nicht wegschmeißen, ich stehe einfach noch voll drauf.
Also, falls jemand eine Idee hat, dann bitte, bitte her damit ...
Danke und Gruß
Trainer
P.S. Hier der Ansatz der im englischsprachigen Forum gepostet wurde:
Spoiler anzeigen
Const $RIDI_DEVICENAME = 0x20000007
Const $RID_INPUT = 0x10000003
Const $RID_HEADER = 0x10000005
$ridl=DllStructCreate("dword;dword")
$numdevices=DllStructCreate("int")
$temp=DllCall("user32.dll","long","GetRawInputDeviceList","ptr",0,"ptr",DllStructGetPtr($numdevices),"long",DllStructGetSize($ridl))
;MsgBox(0,"Call Return:",$temp)
$devnum = DllStructGetData($numdevices,1)
MsgBox(0,"Number of Devices:",$devnum)
;Dim $rid[4]
$temp = ""
For $i = 1 to ($devnum-1)
$temp=$temp & "dword;dword;"
Next
$temp = $temp & "dword;dword"
;MsgBox(0,"Structure:",$temp)
$rid=DllStructCreate($temp)
$dwsize = $numdevices * DllStructGetSize($ridl)
$temp=DllCall("user32.dll","long","GetRawInputDeviceList","ptr",DllStructGetPtr($rid),"ptr",DllStructGetPtr($numdevices),"long",DllStructGetSize($ridl))
;MsgBox(0,"Call Return:",$temp)
For $i = 0 to ($devnum-1)
$devname=DllStructCreate("char[256]")
$size=DllStructCreate("dword")
DllStructSetData($size,1,256)
DllCall("user32.dll","long","GetRawInputDeviceInfo","long",DllStructGetData($rid,($i*2)+1),"int",$RIDI_DEVICENAME,"ptr",DllStructGetPtr($devname),"ptr",DllStructGetPtr($size))
MsgBox(0,"Device: " & $i, "Handle: " & DllStructGetData($rid,($i*2)+1) & " Type: " & DllStructGetData($rid,($i*2)+2) & " Name: " & DllStructGetData($devname,1))
If StringInStr(DllStructGetData($devname,1),"Vid_0925") <> 0 Then;works up to here
MsgBox(0,"Score!","Playstation 2 Dvd Remote Found!")
$remotehwnd = DllStructGetData($rid,($i*2)+1)
$i = 99
EndIf
Next
$size=0;DllStructCreate("dword")
$RawInputHeader=DllStructCreate("dword;dword;dword;dword")
$RawInput=DllStructCreate("dword;dword;dword;dword;dword;dword;byte[256]")
MsgBox(0,"Size:",DllStructGetData($size,1))
;here's the call that i can't get working
$temp = DllCall("user32.dll","int","GetRawInputData", _
"long",$remotehwnd,"int",$RID_HEADER, _
"ptr",0,"long",$size, _
"long",DllStructGetSize($RawInputHeader) )
$ourError = DLLCall("kernel32.dll","int","GetLastError")
MsgBox(0,"Error:",$ourError)
MsgBox(0,"Call Return:",$temp)
MsgBox(0,"Size:",DllStructGetData($size,1))
For $i = 1 to 7
MsgBox(0,"Data Lister:",DllStructGetData($RawInput,$i))
Next