Entwickler-Ecke
Windows API - Icon in der Schnelllstartleiste anlegen, aber wie?
del1312 - Mo 30.06.03 10:24
Titel: Icon in der Schnelllstartleiste anlegen, aber wie?
Ich ich möchte gerne nen Icon in der Schnellstartleiste von W2K anlegen wie mach ich das am besten?
hansa - Mo 30.06.03 10:52
hier ist alles drin, was Du brauchst, mußt es nur bei Dir richtig zusammensetzen :
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 NID.Wnd := self.Handle; NID.hIcon := Application.Icon.Handle; Application.OnMinimize := MinimizeToTNA; Application.Minimize; end;
procedure TForm1.FormDestroy(Sender: TObject); begin Shell_NotifyIcon(NIM_DELETE,@NID); end;
procedure TForm1.MinimizeToTNA(Sender: TObject); begin if(Shell_NotifyIcon(NIM_ADD,@NID)) then 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 Shell_NotifyIcon(NIM_DELETE,@NID); ShowWindow(Application.Handle,SW_SHOW); 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; |
del1312 - Mo 30.06.03 11:10
vielen dank ich schau es mir gleich mal an :D
hansa - Mo 30.06.03 11:13
langsam, es fehlt noch folgende Deklaration, sonst geht es sowieso nicht:
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 : ''; ); |
Delete - 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 - 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.
UGrohne - 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 - 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?
ddcool - Mi 09.07.03 17:06
Ich hab hier eine einfache Lösung!
geh mal auf
http://www.delphi32.com/vcl/5086/download,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
Delete - 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.
Delete - 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
Quelltext
1:
| Laufwerk:\Pfad\...\Anwendungsdaten |
(oder die englischen Entsprechungen auf einem englischen Windows). An diesen ermittelten Teil muss man demnach nur noch
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? [
http://www.delphi-forum.de/viewtopic.php?t=9428]; als Anregung, wie man die Shellfunktionen nutzt. - Und mit Bestürzung habe ich festgestellt, dass es das schon mal gab:
Systemordner [
http://www.delphi-forum.de/viewtopic.php?t=6392]. Erschreckend, diese Suchfunktion. :mrgreen:
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!