Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Anwendung vollständig verstecken (https://www.delphipraxis.net/60726-anwendung-vollstaendig-verstecken.html)

konda 11. Jan 2006 16:46


Anwendung vollständig verstecken
 
hallo,
mal ne Frage, kann man eine Anwendung so programmieren das sie völlig versteckt läuft, also das weder in der Start leiste etwas zu sehen ist noch ihm Taskmanager? :gruebel:

jim_raynor 11. Jan 2006 17:02

Re: Anwendung vollständig verstecken
 
Wozu?

Kevin 11. Jan 2006 17:05

Re: Anwendung vollständig verstecken
 
Ist zwar keine Antwort, lag mir aber auch auf der Zunge. Solche Nachfragen finde ich immer sehr suspekt, sorry...

Ferber 11. Jan 2006 17:08

Re: Anwendung vollständig verstecken
 
Wurde ausserdem bereits diskutiert.

robinWie 11. Jan 2006 17:16

Re: Anwendung vollständig verstecken
 
Ich habe mal dass Hier gefunden
Delphi-Quellcode:
private
  procedure WMSysCommand(var msg: TWMSysCommand); message WM_SysCommand;

procedure TMainForm.WMSysCommand(var msg: TWMSysCommand);
begin
  if msg.CmdType and $FFF0 = SC_MINIMIZE then
    hide
  else
    inherited;
end;

procedure TMainForm.FormShow(Sender: TObject);
var
  hwndOwner: HWnd;
begin
  hwndOwner := GetWindow(Handle, GW_OWNER);
  ShowWindow(hwndOwner, SW_HIDE);
  // For Windows 2000, additionally call the ShowWindowAsync function:
  ShowWindowAsync(hwndOwner, SW_HIDE);
  //Form is invisible, too
  ShowWindowAsync(Self.Handle, SW_HIDE);
  //Form is show
  ShowWindowAsync(Self.Handle, SW_SHOW);
end;
[edit] Damit ist das Programm in der Taskleiste und im TaskManager versteckt, jedoch der Prozess wird immer noch angezeigt [/edit]

Luckie 11. Jan 2006 17:52

Re: Anwendung vollständig verstecken
 
Zitat:

Zitat von robinWie
jedoch der Prozess wird immer noch angezeigt [/edit]

Um mal eine Politiker zu ziteiren:
Zitat:

Und das ist auch gut so.
Warum soll der Anwender nicht wissen, dass dein Programm läuft? Nenn mir einen trifftigen Grund.

robinWie 11. Jan 2006 18:07

Re: Anwendung vollständig verstecken
 
@ Luckie:
Das der Prozess noch angezeigt wird finde ich ja gut weil wenn der mal abschmiert kann man ihn noch beenden. Ich das mal bei einem Programm von mir ausgestattet damit es nicht "im Weg" ist, es wird aber stattdessen als TrayIcon angezeigt. Sinnvoll ist das auch bei Programmen die z. B. irgendwas überwachen und nicht weiter auffallen wollen.

@ all:
Ich hoffe keiner wird den von mir zur verfügung gestellten Code ausnutzen um Programm zu erstellen die z.B. System Dateien löschen oder den Computer sonstwie beschädigen und diese Programme desshalb nicht angezeigt werden sollen. Ich persönlich finde es Albern Vieren zu programmieren.

[edit] @ Konda: du solltest dein Programm dann auch als TrayIcon anzeigen lassen [/edit]

Luckie 11. Jan 2006 18:14

Re: Anwendung vollständig verstecken
 
Ich bezog mich darauf:
Zitat:

jedoch der Prozess wird immer noch angezeigt
womit wohl die Prozessliste unter NT ff. vom Taskmanager gemeint ist.

konda 12. Jan 2006 11:48

Re: Anwendung vollständig verstecken
 
keine angst, ich will kein virus programmieren. ich hab nur so nen kleines info programm und das soll nicht einzeln in der startliste aufgelistet sein. das mit dem taskmanager ist rein aus interesse, weil unter der kategorie prozesse mindestens 20 prozesse aufgelistet sind, aber dazu keine programme angezeigt werden und da hat es mich interessiert ob das irgendwie zu machen ist. :angel:

Der Code übrigens klappt perfekt :thumb:

Nakor 13. Apr 2006 23:35

Re: Anwendung vollständig verstecken
 
Zitat:

Delphi-Quellcode:
private
  procedure WMSysCommand(var msg: TWMSysCommand); message WM_SysCommand;

procedure TMainForm.WMSysCommand(var msg: TWMSysCommand);
begin
  if msg.CmdType and $FFF0 = SC_MINIMIZE then
    hide
  else
    inherited;
end;
[edit] Damit ist das Programm in der Taskleiste und im TaskManager versteckt, jedoch der Prozess wird immer noch angezeigt [/edit]
Nachdem ich nun schon einige Zeit hier nur mitlese, habe ich jetzt auch mal eine Frage:

Aber erstmal: Hallo an alle!

Ich habe den obigen Code auch in einem meiner Programme verwendet. Das Programm verschwindet nur vernünftig aus der Taksbar, wenn ich es über den "Minimiere"-Button oben rechts verkleinere. Wenn ich versuche das Programm über einen Klick auf den Programmeintrag in der Taskbar zu verkleinern, wird zwar das Programmfenster minimiert, der Eintrag in der Taskbar bleibt aber erhalten.

Hat da noch jemand einen Hinweis für mich, wie ich diesen Schönheitsfehler wegbekomme?

Luckie 14. Apr 2006 00:31

Re: Anwendung vollständig verstecken
 
Eine Lösung fällt mir nicht ein, aber der Grund, warum das so ist. ;) Der Eintrag in der Taskbar ist nicht vom Hauptfesnter, sondern vom unsichtabren Anwendungsfenster der VCL.

XHelp 14. Apr 2006 01:32

Re: Anwendung vollständig verstecken
 
Unter welchem Betriebsystem soll das Programm laufen? Bei 98 ist es relativ leicht ein Program zu verstecken... bei XP nicht...

Du kannst auch das Program als Dienst machen, dann wird es auch nicht in der Taskleiste aufgeführt.

ichbins 14. Apr 2006 01:38

Re: Anwendung vollständig verstecken
 
@Nakor: Einfach das Programm im Code wieder maximieren (form.windowstyle:=wsmaximized oder so) und dann minimieren (form.windowstyle:=wsminimized), sobald der entsprechende Event ausgelöst wird.

Alle Angaben ohne Gewähr ;)

Nakor 16. Apr 2006 10:00

Re: Anwendung vollständig verstecken
 
Zitat:

Ich habe den obigen Code auch in einem meiner Programme verwendet. Das Programm verschwindet nur vernünftig aus der Taksbar, wenn ich es über den "Minimiere"-Button oben rechts verkleinere. Wenn ich versuche das Programm über einen Klick auf den Programmeintrag in der Taskbar zu verkleinern, wird zwar das Programmfenster minimiert, der Eintrag in der Taskbar bleibt aber erhalten.

Hat da noch jemand einen Hinweis für mich, wie ich diesen Schönheitsfehler wegbekomme?
So, ich habe das jetzt anders gelöst. Ich habe Application.onMinimze eine entsprechende neue Ereignis-Routine zugewiesen.
Jetzt funktionieren auch beide Varianten wie gewünscht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:20 Uhr.

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