R
rastelli
Bekanntes Mitglied
- Dabei seit
- 05.09.1999
- Beiträge
- 177
- Reaktionspunkte
- 0
Hi Webster!
Stimmt. Die Geschichte kann man benutzen, wenn man NT-Dienste starten, stoppen, anhalten usw. will. Zum Beenden von ganzen Applikation langt das nicht.
Um Applikationen auf dem normalen Wege zu beenden, müßte man rein theoretisch dem Programm die Botschaft senden, sich zu beenden. Also wahrscheinlich Applikations-Handle rauskriegen und dann eine Windows-Message verschicken - habe ich allerdings selbst noch nicht gemacht.
Eine zweite Möglichkeit wäre, das Modul mit Stumpf und Stiel zu entfernen. Und dazu habe ich Code da:
var modstruc: TModuleEntry;
ergebnis: integer;
name, handlex, groesse, count, verz: string;
zeile: integer;
size: longint;
begin
zeile := 1;
modstruc.dwSize := sizeOf(tmoduleentry); {Strukturgröße bestimmen}
{evtl. StringGrid vorbereiten, in das man dann die Werte kippt}
if ModuleFirst(@modstruc) then begin
repeat
with modstruc do begin
name := strPas(szModule);
handlex := inttostr(hmodule);
size := GlobalSize(hModule);
groesse := inttostr(size);
count := inttostr(wUsageFlags);
verz := strPas(szExePath);
end;
{jetzt evtl. die Werte ins StringGrid kippen - Zeile für Zeile}
until not ModuleNext(@modstruc);
end;
end;
So, damit kriegt man zumindest die Handles der geladenen Module raus - handlex!
Jetzt das Entfernen:
begin
if count > 1 then Application.Messagebox('Modul wird mehrfach genutzt!','Hinweis',64);
FreeLibrary(handlex);
end;
In erster Linie ist das Programm interessant, da sich damit bereits geladene DLLs rauswerfen lassen - aber eben nicht nur DLLs sondern so ziemlich alles. Bei DLLs muss man halt so oft das Modul freigeben, wie es in Benutzung ist (count).
Hoffe, es hilft.
CU Rastelli
Stimmt. Die Geschichte kann man benutzen, wenn man NT-Dienste starten, stoppen, anhalten usw. will. Zum Beenden von ganzen Applikation langt das nicht.
Um Applikationen auf dem normalen Wege zu beenden, müßte man rein theoretisch dem Programm die Botschaft senden, sich zu beenden. Also wahrscheinlich Applikations-Handle rauskriegen und dann eine Windows-Message verschicken - habe ich allerdings selbst noch nicht gemacht.
Eine zweite Möglichkeit wäre, das Modul mit Stumpf und Stiel zu entfernen. Und dazu habe ich Code da:
var modstruc: TModuleEntry;
ergebnis: integer;
name, handlex, groesse, count, verz: string;
zeile: integer;
size: longint;
begin
zeile := 1;
modstruc.dwSize := sizeOf(tmoduleentry); {Strukturgröße bestimmen}
{evtl. StringGrid vorbereiten, in das man dann die Werte kippt}
if ModuleFirst(@modstruc) then begin
repeat
with modstruc do begin
name := strPas(szModule);
handlex := inttostr(hmodule);
size := GlobalSize(hModule);
groesse := inttostr(size);
count := inttostr(wUsageFlags);
verz := strPas(szExePath);
end;
{jetzt evtl. die Werte ins StringGrid kippen - Zeile für Zeile}
until not ModuleNext(@modstruc);
end;
end;
So, damit kriegt man zumindest die Handles der geladenen Module raus - handlex!
Jetzt das Entfernen:
begin
if count > 1 then Application.Messagebox('Modul wird mehrfach genutzt!','Hinweis',64);
FreeLibrary(handlex);
end;
In erster Linie ist das Programm interessant, da sich damit bereits geladene DLLs rauswerfen lassen - aber eben nicht nur DLLs sondern so ziemlich alles. Bei DLLs muss man halt so oft das Modul freigeben, wie es in Benutzung ist (count).
Hoffe, es hilft.
CU Rastelli