Delphi-PRAXiS
Seite 3 von 4     123 4      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Programm vor Taskmanager verstecken (https://www.delphipraxis.net/49912-programm-vor-taskmanager-verstecken.html)

s14 18. Jul 2005 13:07

Re: Programm vor Taskmanager verstecken
 
@DevilsCamp: Was steht im OnCreate Ereigis des Formulars?
Zeig mal...

DevilsCamp 18. Jul 2005 13:19

Re: Programm vor Taskmanager verstecken
 
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  mdown := false;

  ShowWindow( Application.Handle, SW_HIDE );
  SetWindowLong( Application.Handle, GWL_EXSTYLE,
                 GetWindowLong(Application.Handle, GWL_EXSTYLE) or
                 WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW);
  ShowWindow( Application.Handle, SW_SHOW );
end;
In der Taskleiste ist es verschwunden, aber wie schon gesagt weiterhin per ALT-TAB auswählbar...

Robert Marquardt 18. Jul 2005 13:19

Re: Programm vor Taskmanager verstecken
 
s14, das gehort nicht ins FormCreate. Zu diesem Zeitpunkt muss nicht notwendigerweise ein Fenster vorhanden sein und es ist durchaus moeglich das das Fenster spaeter gegen ein neues ausgewechselt wird.

DevilsCamp 18. Jul 2005 13:31

Re: Programm vor Taskmanager verstecken
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von Olli
@Marc: Ich schaue mal eben nochmal über deinen Code. Habe selber W2K, sollte also reproduzierbar sein ;)

Gruß,

Anbei die neue Version

Olli 18. Jul 2005 13:35

Re: Programm vor Taskmanager verstecken
 
Zitat:

Zitat von Robert Marquardt
s14, das gehort nicht ins FormCreate. Zu diesem Zeitpunkt muss nicht notwendigerweise ein Fenster vorhanden sein und es ist durchaus moeglich das das Fenster spaeter gegen ein neues ausgewechselt wird.

Moin Robert, doch es ist vorhanden, denn er nimmt Application.Handle :zwinker:

DevilsCamp 18. Jul 2005 13:39

Re: Programm vor Taskmanager verstecken
 
Ich habe den Fehler.

Das Icon, das bei Alt-Tab angezeigt wird, gehört zum MainForm.
Ich muss also auch das MainForm (in diesem Fall Form1) verstecken:

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  mdown := false;

  Timer1.Enabled := True;

end;


procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Timer1.Enabled := false;

  ShowWindow( Application.Handle, SW_HIDE );
  SetWindowLong( Application.Handle, GWL_EXSTYLE,
                 GetWindowLong(Application.Handle, GWL_EXSTYLE) or
                 WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW);
  ShowWindow( Application.Handle, SW_SHOW );

  ShowWindow( Handle, SW_HIDE );
  SetWindowLong( Handle, GWL_EXSTYLE,
                 GetWindowLong(Handle, GWL_EXSTYLE) or
                 WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW);
  ShowWindow( Handle, SW_SHOW );
end;
So funktioniert es...

Robert_G 18. Jul 2005 13:42

Re: Programm vor Taskmanager verstecken
 
Ist der Timer den wirklich nötig?
Würde es nicht reichen den Constructor zu überschreiben? FormCreate wird ja irgendwo dazwischen aufgerufen....

DevilsCamp 18. Jul 2005 13:51

Re: Programm vor Taskmanager verstecken
 
Ich habe aber erst ein Handle auf das Fenster, NACHDEM es erstellt wurde. Und nicht schon vorher...

Olli 18. Jul 2005 13:53

Re: Programm vor Taskmanager verstecken
 
Zitat:

Zitat von DevilsCamp
Ich habe aber erst ein Handle auf das Fenster, NACHDEM es erstellt wurde. Und nicht schon vorher...

DevilsCamp, verwechsele nicht VCL-Objekte und Windows-Objekte. Außerdem kannst du beim Überladen ja inherited angeben und dann dein eigenes Zeug danach machen. Dann existiert definitiv ein Handle ;)

Robert_G 18. Jul 2005 13:59

Re: Programm vor Taskmanager verstecken
 
Zitat:

Zitat von DevilsCamp
Ich habe aber erst ein Handle auf das Fenster, NACHDEM es erstellt wurde. Und nicht schon vorher...

richtig. ;)

Delphi-Quellcode:
constructor TSomeForm.Create(AOwner: TComponent);
begin
   inherited;
   // OnCreate würde noch *im* Constrcutor
   // des Vorgängers (TCustomForm) aufgerufen werden
   // somit wird alles nach inherited auch nach OnCreate
   // und somit nach allem Fenstergedönst aufgerufen
   
   ShowWindow(Application.Handle, SW_HIDE);

   SetWindowLong(Application.Handle,
                 GWL_EXSTYLE,
                 GetWindowLong(Application.Handle, GWL_EXSTYLE) or
                 WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW);

   ShowWindow(Application.Handle, SW_SHOW);

   ShowWindow(Handle, SW_HIDE);
   SetWindowLong(Handle,
                 GWL_EXSTYLE,
                 GetWindowLong(Handle, GWL_EXSTYLE) or
                 WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW);

   ShowWindow(Handle, SW_SHOW);
end;
Nachtrag: @Ollie: Jenau! :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:54 Uhr.
Seite 3 von 4     123 4      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz