NAWrapper - Hierbei handelt es sich um einen Wrapper der es ermöglicht .Net DLLs mit AutoIt zu laden und zu nutzen.
Leider konnte ich nicht intensiv testen wie weit man gehen kann mit den .Net Funktionen, aber ich kann sagen das alle Libs, die ich bisher mit .Net geschrieben habe, einwandfrei gingen(Wenige Ausnahmen mit Codeoptimierung an den Libs). - Pointer/Arrays werden noch nicht unterstützt(Parameter/Return)
void WINAPI Init(); // Initialisiert den Wrapper
/*
* Lädt eine .NET DLL
*
* filePath - Pfad zur .NET DLL
* strNamespace - Namespace in dem sich die Klasse befindet
* strClass - Name der Klasse
*/
void WINAPI LoadDLL(const char* filePath, const char* strNamespace, const char* strClass)
/*
* Fragt einen Wert einer public Variable ab
*
* DLLName - Name der DLL die genutzt werden soll(muss voher geladen sein!), Name ohne .dll!(z.B. ExampleLib.dll -> ExampleLib)
* name - Name der Variable die abgefragt werden soll
*
* return - char array andernfalls NULL
*/
char* WINAPI GetVariable(const char* DLLName, const char* name);
/*
* Setzt einen Wert einer Variable
*
* DLLName - Name der DLL die genutzt werden soll(muss voher geladen sein!), Name ohne .dll!(z.B. ExampleLib.dll -> ExampleLib)
* name - Name der Variable deren Wert gesetzt werden soll
* val - Wert der geschrieben werden soll als char array (Zahlen ebenfalls als char array angeben -> "22", wird intern konvertiert!)
*
*/
void WINAPI SetVariable(const char* DLLName, const char* name, const char* val)
/*
* Ruft eine Funktion auf - ohne Parameter!
*
* DLLName - Name der DLL die genutzt werden soll(muss voher geladen sein!), Name ohne .dll!(z.B. ExampleLib.dll -> ExampleLib)
* name - Name der der Funktion
*
* return - char array andernfalls NULL
*/
char* WINAPI RunMethod(const char* DLLName, const char* name);
/*
* Ruft eine Funktion auf - mit Parameter!
*
* DLLName - Name der DLL die genutzt werden soll(muss voher geladen sein!), Name ohne .dll!(z.B. ExampleLib.dll -> ExampleLib)
* name - Name der der Funktion
* data - Parameter Daten
*
*
* Parameter werden in AutoIt als Struct mit folgendem Format übergeben: int(Parameter count); char array (Parameter)...
* Beispiel:
* $struct = DllStructCreate("int count; char var1[15]; char var2[15]")
* DllStructSetData($struct, "count", 2)
* DllStructSetData($struct, "var1", "test")
* DllStructSetData($struct, "var2", " welt")
*
* Parameter müssen immer ein char array sein! Wenn ihr einen Integer Wert(z.B. 12) übergeben wollt übergibt ein char array mit "12"
* Konvertierung erfolgt intern!
*
* return - char array andernfalls NULL
*/
char* WINAPI RunMethodWithParam(const char* DLLName, const char* name, void* data);
Global $NAWrapper = 0
Func NAWrapper_Init($filePath)
if $NAWrapper > 0 Then
SetError(1)
return 1
EndIf
$NAWrapper = DllOpen($filePath)
if $NAWrapper == -1 Then
SetError(2)
return 2
EndIf
DllCall($NAWrapper, "none", "Init")
if @error Then
SetError(@error)
return 3
EndIf
return 0
EndFunc
Func NAWrapper_Unload()
if $NAWrapper > 0 Then
SetError(1)
return 1
EndIf
DllClose($NAWrapper)
$NAWrapper = 0
return 0
EndFunc
Func NAWrapper_LoadDLL($filePath, $strNamespace, $strClass)
if $NAWrapper <= 0 Then
SetError(1)
return 1
EndIf
DllCall($NAWrapper, "none", "LoadDLL", "str", $filePath, "str", $strNamespace, "str", $strClass)
if @error Then
SetError(@error)
return 2
EndIf
return 0
EndFunc
Func NAWrapper_GetVariable($DLLName, $name)
if $NAWrapper <= 0 Then
SetError(1)
return 1
EndIf
$ret = DllCall($NAWrapper, "str", "GetVariable", "str", $DLLName, "str", $name)
if @error Then
SetError(@error)
return 2
EndIf
return $ret
EndFunc
Func NAWrapper_SetVariable($DLLName, $name, $val)
if $NAWrapper <= 0 Then
SetError(1)
return 1
EndIf
DllCall($NAWrapper, "none", "SetVariable", "str", $DLLName, "str", $name, "str", $val)
if @error Then
SetError(@error)
return 2
EndIf
return 0
EndFunc
Func NAWrapper_RunMethod($DLLName, $name)
if $NAWrapper <= 0 Then
SetError(1)
return 1
EndIf
$ret = DllCall($NAWrapper, "str", "RunMethod", "str", $DLLName, "str", $name)
if @error Then
SetError(@error)
return 2
EndIf
return $ret
EndFunc
Func NAWrapper_RunMethodWithParam($DLLName, $name, $struct)
if $NAWrapper <= 0 Then
SetError(1)
return 1
EndIf
$ret = DllCall($NAWrapper, "str", "RunMethodWithParam", "str", $DLLName, "str", $name, "ptr", DllStructGetPtr($struct))
if @error Then
SetError(@error)
return 2
EndIf
return $ret
EndFunc
-> Beschreibung siehe: Funktionen vom Wrapper
Im Archiv ist ein Beispiel mit Lib Source enthalten, zusätzlich sind 3 weitere Beispiele enthalten(ohne Lib Source).
Bitte beachtet das die NAManager.dll & NAWrapper.dll immer bei eurem Program liegt!
Zudem beachtet bitte das dies eine Alpha ist und es noch viele Fehler geben kann.
Feedback & Vorschläge sind erwünscht, zudem meldet auch Fehler damit ich diese beheben kann!
Ich habe zwar noch keine "sinnvolle" Verwertung dafür gefunden, finde das Tool aber dennoch nützlich und der ein oder andere kann es sicher gut gebrauchen