Das komische ist ja genau das,
Dass es nirgendsfehler gibt.
hab alles einzeln ausgeben lassen
DLL parameter
-
- [ offen ]
-
AutoItfreak -
22. Oktober 2012 um 17:20 -
Geschlossen -
Erledigt
-
-
hm. Jetzt wäre ein Blick in eine ordentliche Dokumentation der DLL hilfreich.
-
Warte...
hier is die PDF
von der AlienFX SDK -
Schau mal in "\SDK\unmanage\" bzw. " \include\" nach. Dort sollten .h-Dateien sein und in denen sollte dann z.B. "#define LFX_ERROR_NOINIT x" stehen. In deinem Code musst du dann x verwenden statt LFX_ERROR_NOINIT. Die Funktionsnamen bleiben natürlich gleich.
-
[autoit]
$Strut = DllStructCreate('char 0x00FF0000;char 0xFF000000')
[/autoit]
$Call = DllCall($hDll, 'uint', 'LFX_Light', 'char', 0x000200, 'char', $Strut)
LFX_Light ist so wie ich das sehe, anders definiert:Du hast z.B. char benutzt, der Prototype sagt unsigned int.
In der PDF ist auf Seite 7 ist ein Beispiel in C/C++.
Spoiler anzeigen
Code
Alles anzeigenint _tmain(int argc, _TCHAR* argv[]) { LFX_Initialize(); // Reset the state machine and await light settings LFX_Reset(); // Set all lights to blue LFX_Light(LFX_ALL, LFX_BLUE | LFX_FULL_BRIGHTNESS); // Update the state machine, // which causes the physical color change LFX_Update(); // Cleanup and detach from the system LFX_Release(); return 0; }
ich habe das mal in AutoIt umgeschrieben:Spoiler anzeigen
[autoit]Global Const $LFX_ALL = 0, $LFX_BLUE = 0, $LFX_FULL_BRIGHTNESS = 0
[/autoit]
Local $sPath = "LightFX.dll", $hDll = DllOpen($sPath)
DllCall($hDll, 'uint', 'LFX_Initialize')
DllCall($hDll, 'uint', 'LFX_Reset')
DllCall($hDll, 'uint', 'LFX_Light', 'uint', $LFX_ALL, 'uint', BitOR($LFX_BLUE, $LFX_FULL_BRIGHTNESS))
DllCall($hDll, 'uint', 'LFX_Update')
DllCall($hDll, 'uint', 'LFX_Release')
DllClose($hDll)
Leider bin ich nicht im Besitz eines Alienware AlieFX und habe auch nicht das SDK, weshalb du die Werte für $LFX_ALL, $LFX_BLUE und $LFX_FULL_BRIGHTNESS selbst einsetzen musst. Ich konnte meinen Code daher auch nicht testen.
Ich hoffe das hilft dir trotzdem weiter.mfg
Developer30 -
Vielen Dank,
Hab die Werte aus LFXDecl.h eingetragen,
Aber Leider funzt es net.Die Au3-exe hängt sich jedes mal beim starten auf,
wenn man allerdings die Zeile mit dem Befehl LFX_Light
herauslässt passiert zwar nix, aber es hängt sich net auf.So sieht das Skript im Moment aus:
Spoiler anzeigen
[autoit]Global Const $LFX_ALL = 0x07FFFFFF, $LFX_BLUE = 0x000000FF, $LFX_FULL_BRIGHTNESS = 0xFF000000
[/autoit]
Local $sPath = ".\LightFX.dll", $hDll = DllOpen($sPath)
DllCall($hDll, 'uint', 'LFX_Initialize')
DllCall($hDll, 'uint', 'LFX_Reset')
DllCall($hDll, 'uint', 'LFX_Light', 'uint', $LFX_ALL, 'uint', BitOR($LFX_BLUE, $LFX_FULL_BRIGHTNESS))
DllCall($hDll, 'uint', 'LFX_Update')
DllCall($hDll, 'uint', 'LFX_Release')
DllClose($hDll) -