![]() |
Programm ohne Taskbareintrag, nur TrayIcon?
Hallo!
Das Thema wurde schon oft diskutiert habe ich gesehen, aber leider haben die Codeteile, die ich gefunden habe nicht so funktioniert, wie ich das gerne hätte. Folgende Funktion benötige ich: Ein Programm soll nur als TrayIcon angezeigt werden, dazu habe ich TTrayIcon benutzt. Die Programmoberfläche besteht nur aus einem Button, der immer im Vordergrund ist. Über den Button lassen sich zwei definierbare Programme umschalten. Allerdings würde ich den Taskbareintrag gerne loswerden, da dieser nur störend für den Benutzer ist. Das habe ich schon versucht:
Delphi-Quellcode:
Application.ShowMainForm := False; // Mainform wird ja nicht mehr angezeigt.
Delphi-Quellcode:
procedure TMainform.FormShow(Sender: TObject);
var Owner: HWND; begin Owner := GetWindow(Handle, GW_OWNER); if Owner <> 0 then ShowWindow(Owner, SW_HIDE); end;
Delphi-Quellcode:
Bin für jeden Tipp dankbar!
procedure TMainform.FormShow(Sender: TObject);
begin 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; |
Re: Programm ohne Taskbareintrag, nur TrayIcon?
Delphi-Quellcode:
tiMain ist bei mir das TrayIcon. ShowMainForm := False bleibt...
procedure TfrmMain.ApplicationMinimize(Sender : TObject);
begin ShowWindow(Handle, SW_HIDE); tiMain.Show; end; procedure TfrmMain.FormActivate(Sender : TObject); begin ApplicationMinimize(Self); end; |
Re: Programm ohne Taskbareintrag, nur TrayIcon?
Das funktioniert leider auch nicht.
Wenn das Programm startet, muss der Button angezeigt werden. Eine Möglichkeit zum Minimieren gibt es nicht. |
Re: Programm ohne Taskbareintrag, nur TrayIcon?
Dieser Quelltext funktioniert:
Delphi-Quellcode:
Du darfst ihn nur nicht in das TMainForm.FormShow()-Event schreiben.
Owner := GetWindow(Handle, GW_OWNER);
if Owner <> 0 then ShowWindow(Owner, SW_HIDE); EDIT: Am besten du schreibst es in das OnActivate-Ereigniss. |
Re: Programm ohne Taskbareintrag, nur TrayIcon?
wie bereits erwähnt ist das OnShow-Event der falsche Ort. Grund:
Du sagst mit "Application.ShowMainForm := False" das dein Mainform nie angezeigt werden soll also niemals ein Show ausgeführt werden soll. Entsprechend wird auch nie das OnShow ausgeführt :mrgreen: |
Re: Programm ohne Taskbareintrag, nur TrayIcon?
Danke, jetzt funktionierts.
Delphi-Quellcode:
Application.MainFormOnTaskbar := False;
Delphi-Quellcode:
procedure TMainform.FormActivate(Sender: TObject);
var Owner : HWND; begin Owner := GetWindow(Handle, GW_OWNER); if Owner <> 0 then ShowWindow(Owner, SW_HIDE); end; |
Re: Programm ohne Taskbareintrag, nur TrayIcon?
Hast nicht richtig gelesen, wa? :D
In meinem Beispiel stand drin, dass es das OnActivate Ereignis sein soll... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:28 Uhr. |
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