Delphi-PRAXiS

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 nur im TNA anzeigen? (https://www.delphipraxis.net/26072-programm-nur-im-tna-anzeigen.html)

MCXSC 17. Jul 2004 16:01


Programm nur im TNA anzeigen?
 
Hallo!

Mit welcher Funktion kann ich ein Programm veranlassen, dass es, auch wenn es geöffnet ist, nur im TNA angezeigt wird, also nie in der TaskLeiste?!

mcXsc

Lefko 17. Jul 2004 16:31

Re: Programm nur im TNA anzeigen?
 
mit dem hier:

Delphi-Quellcode:
ShowWindow(Application.Handle, SW_HIDE) //weg
ShowWindow(Application.Handle, SW_SHOW) //wieder da
MfG Lefko :)

MCXSC 17. Jul 2004 16:38

Re: Programm nur im TNA anzeigen?
 
Aber dadurch wird das Programm doch auch nicht IMMEr im TNA angezeigt...?!

alcaeus 17. Jul 2004 16:48

Re: Programm nur im TNA anzeigen?
 
Die Suche bringt den gewünschten Beitrag:
http://www.delphipraxis.net/internal...&highlight=tna
Dazu in der dpr-Datei einfach
Delphi-Quellcode:
Application.ShowMainForm := False;
schreiben.

Greetz
alcaeus

[add]Was genau meinst du mit IMMER in der TNA anzeigen? Solange das programm läuft???[/add]

Lefko 17. Jul 2004 16:52

Re: Programm nur im TNA anzeigen?
 
na dazu nimmst du ein TNotifyIcon und machst das im Form.create an seinen Platz und bei Form.destroy oder wann immer du dein Programm beendest, machst du es wieder weg!

z.B. so:

Delphi-Quellcode:
procedure Taskbar_on(Icontitle : string);
procedure Taskbar_off;
procedure TaskbarEvent(var Msg: TMessage); Message WM_TASKABAREVENT;

...

procedure Taskbar_on (Icontitle : String);
var NotifyIconData: TNotifyIconData;
    a : integer;
begin
Fillchar(NotifyIconData,Sizeof(NotifyIconData),0);
   NotifyIconData.cbSize := Sizeof(NotifyIconData);
   NotifyIconData.Wnd := Handle;
   NotifyIconData.uFlags := NIF_MESSAGE or NIF_ICON or NIF_TIP;
   NotifyIconData.uCallbackMessage := WM_TASKABAREVENT;
   NotifyIconData.hIcon := Application.Icon.Handle;

   for a := 0 to 63 do
   NotifyIconData.szTip[a] := IconTitle[a+1]; //warum hab ich das denn gemacht? :gruebel:

   Shell_NotifyIcon(NIM_ADD, @NotifyIconData);
end;


procedure Taskbar_off;
var NotifyIconData : TNotifyIconData;
begin
FillChar(NotifyIconData,Sizeof(NotifyIconData),0);
   NotifyIconData.cbSize := Sizeof(NotifyIconData);
   NotifyIconData.Wnd := self.Handle;
   NotifyIconData.uFlags := NIF_MESSAGE or NIF_ICON or NIF_TIP;
   NotifyIconData.uCallbackMessage := WM_TASKABAREVENT;
   NotifyIconData.hIcon := Application.Icon.Handle;
   NotifyIconData.szTip := 'Punkt';
   Shell_NotifyIcon(NIM_DELETE, @NotifyIconData);
end;


procedure TForm1.TaskbarEvent(var Msg: TMessage);
begin
if Msg.LParam = wm_LButtonDblClk then begin
                                      Application.restore;
                                      Application.bringtofront;
                                      Form1.activate;
                                      end;

if Msg.LParam = wm_RButtonDown then popupmenu1.popup(Mouse.CursorPos.X,Mouse.CursorPos.Y);
end;
(Also so hab ich es mal gemacht, ist also nur ein Beispiel....)

MfG Lefko


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:47 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