Ich habe folgendes Problem... ICh suche eine Code mit dem man eine Application (meine Application) verstecken (das heißt: kein Eintrag in der Taskbar, kein Eintrag im Task-Manager und das Fenster soll auch nicht da sein) und mann soll es wieder anzeigen lassen können (ich habe mir gedacht, dass wenn man die Exe nochmal aufruft, dass dann die Exe wieder zum Vorschein kommt) Kann jemand helfen???
Announcement
Collapse
No announcement yet.
verstecken und wieder öffnen!?!
Collapse
X
-
Wenn´s eine richtige VCL-Form ist (also allen "Ich schreibe Mini-EXE"-Rufern zum Trotz, @Andreas Kosch: )), dann reichen im Quelltext zwei Einträge:
<PRE>
ShowWindow(Application.Handle,SW_HIDE); // versteckt den Knopf in der Taskleiste
ShowWindow(Form1.Handle,SW_HIDE); // versteckt das Formular
</PRE>
So funktioniert´s bei mir anstandslos. Aufgerufen habe ich beides in "Application.OnActivate". Zum Wiederanzeigen müsstest du dann im DPR-Text nachschauen, ob dein Formular im System bekannt ist (ich schlage "findwindow" vor; aber wenn du den mehrfachen Programmstart auch gleich noch verhindern willst, such mal nach <b>Mutex</b>), und dann müsstest du das Formular und den Knopf in der Taskleiste wieder sichtbar machen.
Zum Eintrag im Task-Manager: Das funktioniert meines Wissens nach nur unter Win9x, also unter NT/2000/XP würd´ ich´s lassen. Deshalb könnte deine Funktion so aussehen:
<PRE>
const
DllHandle : THandle = 0;
Kernel32Dll = 'KERNEL32.DLL';
type
TRegisterServiceProcess = function(dwProcessID,dwType: integer): integer; stdcall;
var
RegisterServiceProcess : TRegisterServiceProcess;
begin
DllHandle := LoadLibrary(Kernel32Dll);
if(DllHandle <> 0) then
begin
@RegisterServiceProcess := GetProcAddress(DllHandle,'RegisterServiceProcess') ;
if(@RegisterServiceProcess = nil) then
begin
FreeLibrary(DllHandle); DllHandle := 0;
end;
end;
if(DllHandle <> 0) then RegisterServiceProcess(GetCurrentProcessID,1);
//
// hier läuft dein Programm ab, und am Ende -->
//
if(DllHandle <> 0) then
begin
FreeLibrary(DllHandle); DllHandle := 0;
end;
end.
</PRE>
Mathias
Comment