Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Programm beim start als TNA icon ablegen (https://www.delphipraxis.net/101574-programm-beim-start-als-tna-icon-ablegen.html)

SaFu 15. Okt 2007 20:04


Programm beim start als TNA icon ablegen
 
Hi

habe mal folgendes Problem ich möchte mein Programm beim Autostart direkt als TNA icon ablegen habe mich mal durch das forum gekämpft aber nichts richtiges gefunden.

der code hier minimiert mir erst das Programm als TNA icon wenn ich unten auf der taskleite auf das feld mit meinem Programm drücke wie kann ich es aber direkt minimiert lassen
Delphi-Quellcode:
unit Unit1; // Anmeldung

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls, ShellApi, Mask,XPMan, DB, DBTables,
  OleCtrls,DateUtils, SHDocVw,INIFiles, jpeg, AppEvnts;

 const
  WM_TASKBAREVENT = WM_USER + 1;

type
  TForm1 = class(TForm)

   
    ApplicationEvents1: TApplicationEvents;
    procedure ApplicationEvents1Minimize(Sender: TObject);



  private

  procedure WMTaskbarEvent(var Message: TMessage); message WM_TASKBAREVENT;
  procedure TaskBarRemoveIcon;
  procedure TaskBarAddIcon;
  public

  end;

var
  Form1: TForm1;


implementation

uses

{$R *.dfm}


procedure TForm1.ApplicationEvents1Minimize(Sender: TObject);
begin
 TaskBarAddIcon;
end;

procedure TForm1.TaskBarAddIcon;
var
  tnid: TNotifyIconData;
  Owner: HWnd;
begin
  with tnid do
  begin
    cbSize := SizeOf(TNotifyIconData);
    Wnd := Form1.Handle;
    uID := 1;
    uFlags := NIF_MESSAGE or NIF_ICON or NIF_TIP;
    uCallbackMessage := WM_TASKBAREVENT;
    hIcon := Application.Icon.Handle;
     PostMessage(Application.Handle, WM_SYSCOMMAND, SC_MINIMIZE, 0);
  end;
   StrCopy(tnid.szTip, 'Runterfahren');
   Shell_NotifyIcon(NIM_ADD, @tnid);

  Owner:=GetWindow(Form1.Handle,GW_OWNER);
  If Owner<>0 then
    ShowWindow(Owner,SW_HIDE);
end;

procedure TForm1.TaskBarRemoveIcon;
var
  tnid: TNotifyIconData;
  Owner: HWnd;
begin
  tnid.cbSize := SizeOf(TNotifyIconData);
  tnid.Wnd := Form1.Handle;
  tnid.uID := 1;
  Shell_NotifyIcon(NIM_DELETE, @tnid);
  Owner:=GetWindow(Form1.Handle,GW_OWNER);
  If Owner<>0 then
   begin
    ShowWindow(Owner,SW_Show);
    ShowWindow(Owner,SW_Normal);
   end;
end;

procedure TForm1.WMTaskbarEvent(var Message: TMessage);
var
  Point: TPoint;
begin
  case Message.LParamLo of
     WM_LBUTTONDOWN: TaskBarRemoveIcon;
     WM_RBUTTONDOWN:
     begin
       SetForegroundWindow(Handle);
       GetCursorPos(point);
     end;
  end;
end;
end.
muss man da nur was ändern

OregonGhost 15. Okt 2007 20:15

Re: Programm beim start als TNA icon ablegen
 
Kannst du nicht einfach TaskbarAddIcon direkt aufrufen, z.B. im FormCreate-Event?

Übrigens, nur so nebenbei, bei Larry Osterman gibt es eine interessante Artikelserie zum Thema TNA-Applets (nach "applet" suchen).

SaFu 15. Okt 2007 20:27

Re: Programm beim start als TNA icon ablegen
 
Zitat:

Zitat von OregonGhost
Kannst du nicht einfach TaskbarAddIcon direkt aufrufen, z.B. im FormCreate-Event?

das habe ich breits schon versucht geht aber nicht

Muetze1 15. Okt 2007 20:40

Re: Programm beim start als TNA icon ablegen
 
Ich hätte da ein Beispielproejekt zu bieten. Vergleich das mal, das kann dir vllt. helfen den Fehler zu finden.

SaFu 15. Okt 2007 20:55

Re: Programm beim start als TNA icon ablegen
 
Liste der Anhänge anzeigen (Anzahl: 1)
hab mir die funltion mal angeguckt aber das ist auch nicht das was ich meine dein Programm Startet auch sofort. aber es soll ja minimirt unten rechts als icon starten und erst wenn ich drauf drücke aufs icon soll es gross werden.


Es funtzt soweit bei mir auch ganz gut nur mein Programm startet Groß und nicht minimiert als icon

OregonGhost 15. Okt 2007 20:57

Re: Programm beim start als TNA icon ablegen
 
Und wenn du dein Hauptformular halt minimiert startest?

SaFu 15. Okt 2007 21:12

Re: Programm beim start als TNA icon ablegen
 
hab ich auch hiermit versucht
Delphi-Quellcode:

Application.Minimize;
wie geschrieben hab das ganze forum auf den kopf gestellt

OregonGhost 15. Okt 2007 21:17

Re: Programm beim start als TNA icon ablegen
 
Ich dachte mehr daran, den WindowState im Objektinspektor auf wsMinimized zu stellen (oder wie das in Delphi eben hieß), geht das nicht?

Progman 15. Okt 2007 21:23

Re: Programm beim start als TNA icon ablegen
 
ich habe das mal vor einiger Zeit so gemacht, dass ich mir ein Form als kleines Startfenster gemacht habe, dort wurde dann das Hauptform erzeugt und in die TNA gepackt. Dann wurde das Startform geschlossen. Das war praktisch wie ein kleiner Splashscreen mit ner Startmitteilung.
Bei Klick auf das TNA-Icon gabs dann ein Popupmenu mit Öffnen, Beenden etc.
Müsste allerdings den Code erstmal suchen....

Whookie 15. Okt 2007 21:27

Re: Programm beim start als TNA icon ablegen
 
Was spricht eigentlich dagegen TCoolTrayIcon zu verwenden?


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:10 Uhr.
Seite 1 von 2  1 2      

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