Thema: Delphi Send to tray

Einzelnen Beitrag anzeigen

MathiasSimmack
(Gast)

n/a Beiträge
 
#4

Re: Send to tray

  Alt 17. Jul 2003, 14:01
Lass mal ein Leerzeichen zwischen Dateinamen und Parameter. Und du solltest "RunName" in doppelte Anführungszeichen setzen; für den Fall, dass es sich um einen langen Dateinamen handelt, bzw. dass der Ordner (in dem das Programm steckt) Leerzeichen usw. enthält:
RunName := '"' + RunName + '" /autorun'; Dann sollte es gehen.

Dann hätte ich die Frage, ob diese Anweisung
RootKey := HKEY_LOCAL_MACHINE; Absicht ist. Bitte nicht falsch verstehen, das ist nicht böse gemeint. Nachdem man mir aber neulich sprachliche Ausraster vorwarf, frage ich lieber nach. Falls du mit einem NT-Betriebssystem arbeitest (NT, 2000, XP) kann es bei HKLM Probleme geben, wenn der Anwender (der dein Programm nutzt) keine ausreichenden Rechte (Admin) hat. Wenn du aber sagst, dass das okay ist, weil dein Programm zwingend mit Admin-Rechten gestartet werden muss bzw. unbedingt auf HKLM zugreifen muss, dann habe ich nichts gesagt. Ansonsten solltest du besser aufRootKey := HKEY_CURRENT_USER; ausweichen. Das erfüllt auch seinen Zweck.

Hm, eins noch. Ich kann mich irren, aber das hier
Delphi-Quellcode:
if(paramstr(1) = '/autorun') then
  Application.ShowMainForm := False;
könnte evtl. noch zum Problem werden. Deine Bedingung war ja, dass das Programm in der TNA verschwindet, wenn es mit dem Parameter gestartet wird. Wird es dagegen normal angeklickt, dann soll es sichtbar bleiben.

Ich hab´s in meinem Posting nur angedeutet, weil ich den ganzen Code aus Luckies Demo nicht schreiben wollte. Aber nur für den Fall, dass du das missverstanden hast - ich dachte das so:
Delphi-Quellcode:
if(paramstr(1) = '/autorun') then begin
  Application.ShowMainForm := False;
  IconData.cbSize := SizeOf(IconData);
  IconData.Wnd := Handle;
  IconData.uID := 100;
  IconData.uFlags := NIF_MESSAGE + NIF_ICON + NIF_TIP;
  IconData.uCallBackMessage := WM_USER + 20;
  IconData.hIcon := Application.Icon.Handle;
  IconData.szTip := 'SysInfo';
  Shell_NotifyIcon(NIM_ADD, @IconData);
end;
Bei deinem Code oben passiert folgendes: Wird das Programm über den Autostart aktiv, scheint alles zu funktionieren. Klickt man es jedoch an, ist es zwar sichtbar, aber es wird auch das TNA-Icon angelegt. Ich weiß nicht, ob du das willst.

Gruß.
  Mit Zitat antworten Zitat