gibt es in Delphi eine Möglichkeit sein Programm in der Taskleiste nicht anzeigen zu lassen.
Ja.
Um ein Programm ohne sichtbares Fenster zu starten, muß man verhindern, daß das Hauptformular automatisch nach dem Programmstart gezeigt wird. Dazu macht man folgenden Eintrag im Projektquelltext nach createform:
Application.ShowMainForm:= false;
Um den Taskbar-Eintrag des Programms zu verstecken, muß man das Applikationsfenster (nicht die MainForm!) unsichtbar machen:
procedure TMainForm.FormShow(Sender: TObject);
var Owner : HWnd;
begin
Owner:=GetWindow(Handle,GW_OWNER);
ShowWindow(Owner,SW_HIDE);
end;
Wie kann ich verhindern, daß nach einem Minimize die Applikation wieder in der Taskbar erscheint?
procedure WMSysCommand(var Message: TWMSysCommand); message
WM_SysCommand;
procedure TMainForm.WMSysCommand(var Message: TWMSysCommand);
begin
if Message.CmdType and $FFF0 = SC_MINIMIZE then
Hide
else
inherited;
end;
Um ein Programm auch im Taskmanager zu verstecken (der mit Strg+Alt+Entf aufgerufen wird), benutzt man die Funktion RegisterServiceProcess, diese Funktionen stehen allerdings unter Windows NT nicht zur Verfügung:
function RegisterServiceProcess(dwProcessID, dwType: DWord): DWord;stdcall;
function RegisterServiceProcess; external ‚KERNEL32.DLL‘ name ‚RegisterServiceProcess‘;
RegisterServiceProcess(0,1); //zum verstecken!
RegisterServiceProcess(0,0); //zum anzeigen !
Schließlich kann man den Task-Manager auch ganz stillegen, um z.B. zu verhindern, daß das eigene Programm verlassen wird. Dieser Tip steht hier nur der Vollständigkeit halber. Die Verwendung dieser Funktionen halte ich persönlich für bedenklich und auch nicht im Sinnen eines Multitasking-Betriebssystems.
{Task-Manager disablen}
SystemParametersInfo(SPI_SCREENSAVERRUNNING,1,Nil,0);
{Task-Manager enablen}
SystemParametersInfo(SPI_SCREENSAVERRUNNING,0,Nil,0);