Entwickler-Ecke
Windows API - Funktion dynamisch laden
sperman41 - Di 19.08.08 22:07
Titel: Funktion dynamisch laden
Hallo Leute!
Ich stehe vor nem kleinen Problem.
Und zwar möchte ich eine Funktion dynamisch laden.
Wozu ich das brauch? Eigentlich gar nicht, ist ja auch nicht zwingend notwendig.
Dennoch interessiert es mich.
Habe auch paar kleine Tutorials durchgearbeitet und es klappt wunderbar.
Jedoch sind das sehr simple Beispiele.
Wie müsste oder könnte der Code aussehen, um diese Funktion dynamisch zu laden?
Delphi-Quelltext
1:
| Function VirtualProtectEx(hProcess: HANDLE; lpAddress: LPVOID; dwSize: SIZE_T; flNewProtect: DWORD; var lpflOldProtect: DWORD): BOOL; stdcall; external 'kernel32.dll' name 'VirtualProtectEx'; |
Natürlich nur wenns nicht zuviel Mühe macht.
Ich denke, dann würde ich es endlich kapieren
Danke
Moderiert von
Narses: Delphi-Tags hinzugefügt
jaenicke - Di 19.08.08 22:46
Hallo und :welcome: ;-)
http://wwwswt.informatik.uni-rostock.de/deutsch/Mitarbeiter/michael/lehre/Delphi_SS2001/Vortrag05/schnittstellen.html#8 ;-)
// EDIT:
Na, ich hab kurz Zeit:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25:
| type TVirtualProtectEx = function(hProcess: HANDLE; lpAddress: LPVOID; dwSize: SIZE_T; flNewProtect: DWORD; var lpflOldProtect: DWORD): BOOL; stdcall;
var MyVirtualProtectEx: TVirtualProtectEx; MyDLLHandle: THandle; begin MyDLLHandle := LoadLibrary('kernel32.dll');
if MyDLLHandle <> 0 then begin @MyVirtualProtectEx := GetProcAddress(MyDLLHandle, 'VirtualProtectEx'); if @MyVirtualProtectEx <> nil then begin ergebnis := MyVirtualProtectEx(...); end else ShowMessage('Fehler'); FreeLibrary(MyDLLHandle); end else ShowMessage('Fehler'); end; |
// EDIT2:
Mitkopierte Tippfehler korrigiert...
sperman41 - Mi 20.08.08 01:46
Vielen Dank erstmal!
Ich bekomme zig kompilierungsfehler.
Unter anderem undefinierte Bezeichner für : Loadlibary, Freelibary, Showmessage
Es heisst doch LibRary oder?
jaenicke - Mi 20.08.08 05:17
Heißt es, ich hab das Beispiel kopiert und nicht weiter nachgeschaut... :oops:
Jedenfalls sollten die benötigten Units eigentlich bei einem normalen Formular bereits eingebunden sein, das ist für LoadLibrary und FreeLibrary (habs auch korrigiert im geposteten Beispiel) die Unit Windows und für ShowMessage Dialogs.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!