Fastkiller
Mitglied
Hallo!
Ich hab da ein Problem: Mir gelingt es nicht eine .dll während der Laufzeit zu laden.
Ich will eine .dll laden wo ich aber noch nicht weiß wo die .dll liegt. D.h. ich suche mir beim laden meiner windows form den Pfad zur dll und will dann die gewünschte dll laden, wenn ich auf meiner WIndows Form einen Button drücke.
So funktioniert das ja nicht:
Jetzt habe ich ein bisschen im Internet herumgesucht und habe folgendes Gefunden:
So würde das bei mir aussehen:
Nur wie kann ich da jetzt meine Funktion public static extern int Decrypt(....) aufrufen?
Danke schonmal!
Ich hab da ein Problem: Mir gelingt es nicht eine .dll während der Laufzeit zu laden.
Ich will eine .dll laden wo ich aber noch nicht weiß wo die .dll liegt. D.h. ich suche mir beim laden meiner windows form den Pfad zur dll und will dann die gewünschte dll laden, wenn ich auf meiner WIndows Form einen Button drücke.
So funktioniert das ja nicht:
Code:
[DllImport("PfadZurDll", CallingConvention = CallingConvention.Cdecl)]
public static extern int Decrypt(
string a,
int b,
StringBuilder c,
int d,
ref int e);
Jetzt habe ich ein bisschen im Internet herumgesucht und habe folgendes Gefunden:
Code:
public delegate int MessageBox(IntPtr hWnd, string lpText, string lpCaption, uint type);
private void button2_Click(object sender, EventArgs e)
{
IntPtr handle = LoadLibrary("user32.dll");
IntPtr funcPtr = GetProcAddress(handle, "MessageBoxA");
MessageBox messageBox = (MessageBox)Marshal.GetDelegateForFunctionPointer(funcPtr, typeof(MessageBox));
messageBox(IntPtr.Zero, "Hello World.", "Caption", 0);
FreeLibrary(handle);
}
So würde das bei mir aussehen:
Code:
IntPtr handle = LoadLibrary("C:\\decryption.dll";);
IntPtr funcPtr = GetProcAddress(handle, "Decrypt";);
FreeLibrary(handle);
Nur wie kann ich da jetzt meine Funktion public static extern int Decrypt(....) aufrufen?
Danke schonmal!