AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Programm beim start als TNA icon ablegen

Ein Thema von SaFu · begonnen am 15. Okt 2007 · letzter Beitrag vom 17. Okt 2007
Antwort Antwort
Seite 2 von 2     12   
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#11

Re: Programm beim start als TNA icon ablegen

  Alt 15. Okt 2007, 22:41
[bitte löschen]
  Mit Zitat antworten Zitat
Progman

Registriert seit: 31. Aug 2007
Ort: 99974 MHL
695 Beiträge
 
Delphi 10.1 Berlin Starter
 
#12

Re: Programm beim start als TNA icon ablegen

  Alt 15. Okt 2007, 22:41
so, hier ist ne kleine Testapp im Anhang. Vielleicht hilfts ja
Angehängte Dateien
Dateityp: rar tna_test_110.rar (15,3 KB, 17x aufgerufen)
Karl-Heinz
Populanten von Domizilen mit fragiler, transparenter Aussenstruktur sollten sich von der Translation von gegen Deformierung resistenter Materie distanzieren!
(Wer im Glashaus sitzt sollte nicht mit Steinen werfen)
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#13

Re: Programm beim start als TNA icon ablegen

  Alt 15. Okt 2007, 22:41
Zitat von fuknersascha:
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.
Nichts leichter als das. Mein Projekt dort folgende Routine ergänzen:
Delphi-Quellcode:
Procedure Tfrm_MainForm.DoCreate;
Begin
  fTaskBarNewReg := RegisterWindowMessage('TaskbarCreated');
  fTaskBarPopupMenuMsg := RegisterWindowMessage('TaskBarPopupMenu');

    // remove for multiple instances
  fInstanceMsg := RegisterWindowMessage('TaskBarIconExampleApp');

  Inherited DoCreate;

    // remove for multiple instances
  SendMessage(HWND_BROADCAST, fInstanceMsg, Handle, 0);

    // >>>> folgendes neu hinzu
  TaskBarAddIcon;
  Application.ShowMainForm := false;
    // <<<< bis hier
End;
Siehe letzte beiden Anweisungen
  Mit Zitat antworten Zitat
Benutzerbild von SaFu
SaFu

Registriert seit: 8. Nov 2006
1.360 Beiträge
 
Delphi 10.3 Rio
 
#14

Re: Programm beim start als TNA icon ablegen

  Alt 17. Okt 2007, 20:30
Danke euch nochmal für die Antorten habe es jetzt aber mal anders gelöst

Falls es jemanden Interessiert oder es mal brauch der Code ist auch ziemlich einfach zu verstehen

Delphi-Quellcode:
unit Unit1;

interface

uses ShellApi;
  
 const WM_TASKBAREVENT = WM_USER + 1;

type
  TForm1 = class(TForm)
    TNATimer2: TTimer;
    TNAPopup1: TPopupMenu;
    TNAImage2: TImage;
    Runterfahren1: TMenuItem;
    Beenden1: TMenuItem;
    procedure FormShow(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure TNATimer2Timer(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure oeffnen1Click(Sender: TObject);
    procedure Beenden1Click(Sender: TObject);
    procedure Timer3Timer(Sender: TObject);

  private
  procedure TaskBarRemoveIcon;
  procedure TaskBarAddIcon;

  protected
   procedure WMTaskbarEvent(var Message: TMessage); message WM_TASKBAREVENT;
  end;

var
  Form1: TForm1;

implementation

uses
var count :Integer;
{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var i: integer;
begin
  TaskBarAddIcon; // Icon setzen
end;

procedure TForm1.FormShow(Sender: TObject);
begin
  ShowWindow(GetWindow(handle,GW_OWNER),SW_HIDE); // Taskbareintrag löschen
end;

//=========Bei Formstart Iconsetzen=============================================
procedure TForm1.TNATimer2Timer(Sender: TObject);
begin
 Inc(count);
  if count = 3 then
   begin
     Self.Hide;
     TNATimer2.Enabled:= False;
   end;
end;

//==================Icon setzen=================================================
procedure TForm1.TaskBarAddIcon;
var tnid: TNotifyIconData;
 begin
   tnid.cbSize := SizeOf(TNotifyIconData);
   tnid.Wnd := Form1.Handle;
   tnid.uID := 1;
   tnid.UFlags:= NIF_MESSAGE or NIF_ICON or NIF_TIP;
   tnid.uCallbackMessage:= WM_TASKBAREVENT;
   tnid.hIcon:= Form1.TNAImage2.Picture.Icon.Handle;
   strcopy(tnid.szTip,'Rechner Runterfahren');
   Shell_NotifyIcon(NIM_Add, @tnid)
end;

//===============Beim öffnen des Icon( Popup)===================================
procedure TForm1.oeffnen1Click(Sender: TObject);
begin
 Form1.Show;
 Timer3.Enabled:= True;
end;

//===========Nach erneuten öfnnen des Programms wieder schließen================
procedure TForm1.Timer3Timer(Sender: TObject);
begin
  Self.Hide;
  Timer3.Enabled:= False;
end;

//===============Beim schließen des Icon( Popup)================================
procedure TForm1.Beenden1Click(Sender: TObject);
begin
 close;
end;

//=====Beim Form schließen Icon wieder aufräumen================================
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 TaskBarRemoveIcon;
end;

//==================Icon weg====================================================
procedure TForm1.TaskBarRemoveIcon;
var tnid: TNotifyIconData;
  begin
   tnid.cbSize := SizeOf(TNotifyIconData);
   tnid.Wnd := Form1.Handle;
   tnid.uID := 1;
   Shell_NotifyIcon(NIM_DELETE, @tnid)
end;

//=================Icon Rechts/Links klick =====================================
procedure TForm1.WMTaskbarEvent(var Message: TMessage);
var Point: TPoint;
begin
  case Message.LParamLo of
     WM_LBUTTONDOWN: // bei Linksklick
     begin
      Form1.Show;
      Timer3.Enabled:= True;
     end;
     WM_RBUTTONDOWN: // bei Rechtsklick
     begin
        GetCursorPos(point);
        TNAPopup1.Popup(point.X,point.Y);
     end;
  end;
end;

end.
Somit wird das Programm gleich beim Start als TNA Icon angezeigt

Wenn man das programm mit rechtsklick auf das icon wieder Öffnet wird es mit hilfe der Eingestellten zeit des Timer3 wieder geschloßen.

Gruß sascha
"... Wie gesagt, die Nutzer von 10, 12, 14 Zoll Display's werden deine Seite nicht in voller Pracht sehen können, ...

Surft Ihr mit dem Taschenrechner?"
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#15

Re: Programm beim start als TNA icon ablegen

  Alt 17. Okt 2007, 21:56
Wie kannst du einen Timer3 programmieren (gleiches für Timer1 & Timer2), wenn diese nicht mal auf der Form liegen (und auch nicht deklariert sind)?

Vor allem ist eine Timerlösung wie mit Kanonen auf Spatzen schiessen. An meinem Beispiel kannst du ja sehen, dass es mit 2 zusätzlichen Zeilen (welche du bei dir genauso anwenden kannst) gleiches bewirkt.
  Mit Zitat antworten Zitat
Benutzerbild von SaFu
SaFu

Registriert seit: 8. Nov 2006
1.360 Beiträge
 
Delphi 10.3 Rio
 
#16

Re: Programm beim start als TNA icon ablegen

  Alt 17. Okt 2007, 22:03
Habe es jetzt nochmal oben Editiert und die zwei zuvielen timer heraus genommen

Ich zweifle ja nicht deine lösung würde ich mir nie bei meinem Programmierstand heraus nehmen

ich fande nur das es mir so am einfachsten erschien da ich beim Programmieren ja nicht gerade die leuchte bin im gegensatz zu anderen hier
"... Wie gesagt, die Nutzer von 10, 12, 14 Zoll Display's werden deine Seite nicht in voller Pracht sehen können, ...

Surft Ihr mit dem Taschenrechner?"
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:16 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