Ich habe für die Logitech-G15-Tastatur im g15-applets Forum eine Bibliothek für den direkten Zugriff auf das Display und Funktionen wie Hintergrundbeleuchtung der Tasten, des Displays, Kontrast des Displays, die Lichter der M-Tasten gefunden.
(Danke an Delphifreak für die klasse Arbeit)
http://www.g15-applets.de/direkter-zugri…yusw-t2948.html
Beim Einbinden in AutoIt scheitere ich aber gerade am Pointer auf die Display-Structur.
Auf dem Display kommen nur wirre Muster an. Die anderen Funktionen Licht, Kontrast ... funktionieren prima.
Hier mein bisheriger Versuch ( ... nur der relevante Teil)
Func LgSetDisplayData($Device)
ab: ;lglcd_dda(BOOL) LgSetDisplayData(LCDDEVICE Device, DISPLAYDATA* DisplayData);
Bitte um Tipps was am Pointer/Struct falsch ist.
Spoiler anzeigen
$lgDll = DllOpen("lglcd_dda_dll.dll")
$Device = LgOpenLcdDevice(0)
LgSetDisplayData($Device)
;lglcd_dda(LCDDEVICE) LgOpenLcdDevice(DWORD Index, BOOL Exclusive, DWORD* KeybdVer);
Func LgOpenLcdDevice($KeybdVer)
$result = DllCall($lgDll, "hwnd:cdecl", "LgOpenLcdDevice", "Int", 0, "dword", 0, "int*", $KeybdVer)
If @error then
msgbox(0,"","Error LgOpenLcdDevice")
Exit
EndIf
Return $result[0]
EndFunc
;------------------------------------------------------ aus lglcd_dda_dllimp.h
;
;lglcd_dda(BOOL) LgSetDisplayData(LCDDEVICE Device, DISPLAYDATA* DisplayData);
;
;const DWORD LGLCD_BMP_WIDTH = 160;
;const DWORD LGLCD_BMP_HEIGHT = 43;
;
;typedef struct {
; BYTE data[(LGLCD_BMP_HEIGHT / + 1][LGLCD_BMP_WIDTH];
;} DISPLAYDATA;
;
;------------------------------------------------------------------------------
Func LgSetDisplayData($Device)
$str = "byte zeile1[160];byte zeile2[160];byte zeile3[160];byte zeile4[160];byte zeile5[160];byte zeile6[160]"
$a = DllStructCreate($str)
if @error Then
MsgBox(0,"","Error DllStructCreate " & @error);
exit
endif
;------------- zum Test leeren, sonst $byteArray übertragen
for $zeile = 1 To 6
for $i = 1 To 160
DllStructSetData($a,$zeile,0,$i)
next
next
;-------------
$ptr = DllStructGetPtr($a)
if @error Then
MsgBox(0,"","Error GetPtr " & @error);
exit
endif
$result = DllCall($lgDll, 'dword:cdecl','LgSetDisplayData', 'ptr', $Device, 'ptr*', $ptr)
If @error then
msgbox(0,"","Error LgSetDisplayData"& @error)
Exit
EndIf
Return
EndFunc