Autor Beitrag
del1312
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 190



BeitragVerfasst: Mo 30.06.03 10:24 
Ich ich möchte gerne nen Icon in der Schnellstartleiste von W2K anlegen wie mach ich das am besten?
hansa
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Mo 30.06.03 10:52 
hier ist alles drin, was Du brauchst, mußt es nur bei Dir richtig zusammensetzen :
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
procedure TForm1.FormCreate(Sender: TObject);
begin 
  // die noch notwendigen Zuordnungen
  NID.Wnd := self.Handle;
  NID.hIcon := Application.Icon.Handle;
  // "OnMinimize"-Event ändern
  Application.OnMinimize := MinimizeToTNA;
  Application.Minimize;
end;

procedure TForm1.FormDestroy(Sender: TObject); 
begin 
  // nur zur Sicherheit 
  Shell_NotifyIcon(NIM_DELETE,@NID); 
end

procedure TForm1.MinimizeToTNA(Sender: TObject); 
begin 
  // wenn das TNA-Symbol ezeugt werden konnte, ... 
  if(Shell_NotifyIcon(NIM_ADD,@NID)) then 
  // ... dann weg mit dem Taskbar-Button 
    ShowWindow(Application.Handle,SW_HIDE); 
end

procedure TForm1.WndProc(var Message: TMessage); 
begin 
  case Message.Msg of 
    WM_TRAYMSG:
      case Message.lParam of 
          WM_LBUTTONDOWN:
          begin
            // weg mit dem TNA-Symbol! 
            Shell_NotifyIcon(NIM_DELETE,@NID); 
            // den Taskbar-Button wieder anzeigen 
            // (egal, wie der Status von "Shell_NotifyIcon" ist) 
            ShowWindow(Application.Handle,SW_SHOW); 
            // und das hier auch noch, um die Anwendung 
            // zu aktivieren und ggf. in den Vordergrund 
            // zu holen
            Application.Restore; 
          end
      end
    else
      inherited WndProc(Message); 
  end
end;

procedure TForm1.FormActivate(Sender: TObject);
begin
  ShowWindow(GetWindow(Handle, GW_OWNER), SW_HIDE);
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Application.OnClose := MinimizeToTNA;
  Application.Close;
end;

_________________
Gruß
Hansa
del1312 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 190



BeitragVerfasst: Mo 30.06.03 11:10 
vielen dank ich schau es mir gleich mal an :D
hansa
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Mo 30.06.03 11:13 
langsam, es fehlt noch folgende Deklaration, sonst geht es sowieso nicht:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
implementation

{$R *.dfm}

const 
  WM_TRAYMSG = WM_USER + 10
var 
  NID : TNotifyIconData = ( 
    cbsize           : sizeof(TNotifyIconData);
    uID              : 0;
    uFlags           : NIF_MESSAGE or NIF_ICON or NIF_TIP;
    uCallbackMessage : WM_TRAYMSG;
    szTip            : '';
  );

_________________
Gruß
Hansa
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 30.06.03 11:13 
Die Schnellstartleiste ist der Bereich rechts neben den Startbutton. Der Code von Hansa ist aber für eine Icon in der TNA, dem Bereich bei der Uhr!
hansa
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Mo 30.06.03 11:19 
Da hat Luckie Recht. Also Achtung, habe das falsch verstanden. Vielleicht reicht es trotzdem. Mit dem Bereich links kann ich leider nicht dienen.

_________________
Gruß
Hansa
UGrohne
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: Mo 30.06.03 11:26 
Da gibts nen Ordner dafür:
Dokumente und Einstellungen\[Benutzername]\Anwendungsdaten\Microsoft\Internet Explorer\Quick Launch

Musst jetzt nur noch den Profilpfad des Benutzers rauskriegen, aber die Frage war hier glaub ich schonmal :wink:
del1312 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 190



BeitragVerfasst: Mo 30.06.03 11:32 
ah alles klar, wie ich den pfad des users rausbekomme weiss ich ja nun schon :D noch ne kleine frage wie leg ich da ne verknüpfung an?
Tino
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: Mo 30.06.03 11:56 
ecspooky hat folgendes geschrieben:
wie leg ich da ne verknüpfung an?

Da reicht ein Blick in die FAQ: ...eine Dateiverknüpfung (*.lnk) erstellen?

Gruß
Tino
ddcool
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 28



BeitragVerfasst: Mi 09.07.03 17:06 
Ich hab hier eine einfache Lösung!

geh mal auf www.delphi32.com/vcl...ownload,xid,5086.asp und lade dir das Zip runter. Danach öffnest du die "CoolTrayIcon_D5" oder die "CoolTrayIcon_D6plus" mit Delphi und Installiert die Komponente einfach.
Nun hast du in der Koponentenleiste einen neuen Eintrag und fertig!
Nur noch die Komponente ins Project einfügen und entsprechend bearbeiten.

greez Basti
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 09.07.03 17:21 
Hallo? Es geht um die QuickLaunchbar rechts neben dem Startbutton. Der Name der Komponente läßt aber daraufschließen, dass die Komponente ein Icon in der TNA, dem Bereich neben der Uhr, erzeugt.

Rechtsschreibfehler ausgebügelt.


Zuletzt bearbeitet von Luckie am Mi 09.07.03 21:36, insgesamt 1-mal bearbeitet
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 09.07.03 18:38 
@Luckie: :)

Ich will aber mal was hierzu sagen:
UGrohne hat folgendes geschrieben:
Da gibts nen Ordner dafür:
Dokumente und Einstellungen\[Benutzername]\Anwendungsdaten\Microsoft\Internet Explorer\Quick Launch

Musst jetzt nur noch den Profilpfad des Benutzers rauskriegen

Das funktioniert nur auf NT-Systemen (speziell wohl 2000 und XP). Wenn das Programm aber veröffentlicht werden und als Feature diesen Link in der Schnellstartleiste erstellen soll, dann geht das unter 9x in die Hose. Hier steckt der Schnellstartordner nämlich unter dem Windows-Verzeichnis.

Ich empfehle daher den Einsatz einer Shell-Funktion (etwa SHGetSpecialFolderPath, und Co.), mit der man den Pfad von bestimmten Ordnern ermitteln kann. Die dafür notwendige Shell-Konstante lautet übrigens CSIDL_APPDATA und entspricht dem Ordner
ausblenden Quelltext
1:
Laufwerk:\Pfad\...\Anwendungsdaten					

(oder die englischen Entsprechungen auf einem englischen Windows). An diesen ermittelten Teil muss man demnach nur noch
ausblenden Quelltext
1:
Microsoft\Internet Explorer\Quick Launch					

anhängen, und man ist (relativ unabhängig von der laufenden Windows-Version) am richtigen Ort!

Nachtrag: ...wie kann ich spezielle Ordner finden?; als Anregung, wie man die Shellfunktionen nutzt. - Und mit Bestürzung habe ich festgestellt, dass es das schon mal gab: Systemordner. Erschreckend, diese Suchfunktion. :mrgreen: