operacje w tray/autostart - co robie zle ?? :(

0

witajcie Towarzysze niedoli ! :|

Ostatnio pytalem o minimalizowanie do traya. Ale sa takie oto problemy:
1. uruchamianie programu podczas wlaczania sie kompa dziala - ale co zrobic zeby uruchamial sie od razu w tray'u??
a) dodanie programu do autostartu odbywa sie poprzez taki kod:

procedure TForm1.Button1Click(Sender: TObject);
var
  Reg: TRegistry;
begin
Reg := TRegistry.Create;
Reg.RootKey := HKEY_LOCAL_MACHINE;
Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run', True);
Reg.WriteString('Pakerek',ParamStr(0)+' /tray');
Reg.CloseKey;
Reg.Free;
end;

b) oto kod ktory jest odpowiedzialny za uruchomienie programu przy autostarcie i wrzycenie go do traya - TYLE ZE WLASNIE COS NIE DZIALA :(

procedure TForm1.FormCreate(Sender: TObject);
begin
if ParamCount > 0 then
  if ParamStr(1) = '/tray' then
    Form1.Hide;
end;
procedure TForm1.FormPaint(Sender: TObject);
begin
  if schowaj=true then
  begin
    Form1.Hide;
    schowaj := false;
  end;
end;

co jest nie tak w powyzszym kodzie?:( uruchamiam kompa juz chyba po raz 20sty i tylko pozostaje walic glowa o klawiature :(

2. Usuwanie z autostartu odbywa sie poprzez taki kod i tez nie dziala:

procedure TForm1.Button2Click(Sender: TObject);
var
  Reg: TRegistry;
begin
 Reg := TRegistry.Create;
    Reg.RootKey := HKEY_LOCAL_MACHINE;
    Reg.OpenKey('\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run', true);
    Reg.DeleteValue('Pakerek');
    Reg.CloseKey;
    Reg.Free;
end;

dlaczego nie chce usunac z autostartu ? :(
z gory dzieki za poswiecony czas .. no i za pomoc rzecz jasna :( [sciana]

0

Według mnie linię:

Reg.WriteString('Pakerek',ParamStr(0)+' /tray');

powinieneś zamienić na

reg.writeString('Pakerek', '"'+application.ExeName+'"' + ' tray')

i wtedy powinno być OK (tak jest u mnie w programie i wszystko działa bez problemu)

P.S. Czego używasz aby ukryć aplikację w tray'u??

0

P.S. Czego używasz aby ukryć aplikację w tray'u??

procedure TForm1.TrayProc(var Msg: TMessage);
var
  P : TPoint;
  S : TStringList;
begin
  if Msg.LParam = WM_RBUTTONDOWN then // Jezeli nacisnieto prawy przycisk myszy...
  begin
    SetForegroundWindow(Handle);
    GetCursorPos(P); //.. pobierz wspolrzedne kursora
    TrayMenu.Popup(P.X, P.Y); // wyswietl menu
  end;

  if Msg.LParam = WM_LBUTTONDOWN then
  begin// Jezeli uzytkownik nacisnol lewy przycisk...
    ShowWindow(Handle, SW_SHOW);  // pokaz forme
    S := TStringList.Create;  // utworz zmienna
    src.SetFocus; //kursor na pozycji w SRC
    S.Free;
  end;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 Tray.cbSize := SizeOf(Tray);
  Tray.Wnd := Handle;
  Tray.hIcon := Application.Icon.Handle; // zaladuj ikone
  Tray.szTip := 'Pakerek 4 the Sweetest Ptys:*'; // dymek podpowiedzi
  Tray.uFlags := NIF_ICON + NIF_MESSAGE + NIF_TIP; // flagi
  Tray.uCallbackMessage := WM_ICONTOTRAY;  // komunikat
  Shell_NotifyIcon(NIM_ADD, @Tray); // dodaj do Tray'a
  Action := caNone;      // nie rob nic..
  Form1.Hide; //ukryj formularz
{
 Action moze byc takze:
   caFree - zwolnij
   caNone - nie rob nic
   caHide - ukryj
}
  ShowWindow(Handle, sw_Hide);
end;
procedure TForm1.MenuExistClick(Sender: TObject);
begin
 // Procedura, ktora konczy dzialanie programu
  Done := True; // zatrzymaj animacje
  Shell_NotifyIcon(NIM_DELETE, @Tray); // usun ikone z Tray'a
  Application.Terminate; // zakoncz program
end;

:|

1 użytkowników online, w tym zalogowanych: 0, gości: 1