[ explorer-1 @ 22.02.2007. 17:43 ] @
Što ovdje ne valja ?

Code:

        TRegistry *registar = new TRegistry;
        registar->RootKey = HKEY_CURRENT_USER;
        registar->OpenKey("Software\\Microsoft\Windows\\CurrentVersion\\Run", true);
        try{
                if(CheckBox2->Checked == true){
                          registar->DeleteValue("Program");
                          registar->WriteString("Program", Application->ExeName);
                }
                 else {
                 registar->DeleteValue("Program");
                 }
        }
        __finally{
        {
                delete registar;
                }
        }
[ explorer-1 @ 22.02.2007. 20:29 ] @
Ok sad samo to rješio no novi problem.
Taj exe za sobom viče neke fajove, i sad na startupu on to ne učita. Hmm... u čemu je problem ?
[ X Files @ 23.02.2007. 08:18 ] @
Nisam razumeo ovo poslednje. Objasni detaljnije.

Što se tiče autostarta, ja koristim otprilike ovakav kod:

(obrati pažnju na navodnike oko imena fajla: ParamStr(0), tj. Application->ExeName,
mislim da ako ih nema to može stvoriti probleme ako je putnja sa blankovima)

Code:

bool TNekiForm::HandleAutostart( bool Action ) // <--- hoćeš/nećeš, tj. kod tebe CheckBox2->Checked
{
   bool SystemOk = true;

   TRegistry *pReg = NULL;

   AnsiString AUTOSTART = "\\Software\\Microsoft\\Windows\\CurrentVersion\\Run";
   AnsiString KEY = "naziv programa";
   try
   {
      try
      {
         pReg = new TRegistry;
         pReg->RootKey = HKEY_LOCAL_MACHINE; // <--- Ovo je kod tebe HKEY_CURRENT_USER
         if ( Action )
         {
            if ( pReg->OpenKey( AUTOSTART, true ) )
               pReg->WriteString( KEY, "\"" + ParamStr(0) + "\"" );
            else
               SystemOk = false;
         }
         else
         {
            if ( pReg->OpenKey( AUTOSTART, true ) )
               SystemOk = pReg->DeleteValue( KEY );
            else
               SystemOk = false;
         }
      }
      catch ( const Exception &e )
      {
         SystemOk = false;
      }
   }
   __finally
   {
      if ( pReg )
      {
         pReg->CloseKey();
         delete pReg;
      }
   }
   return ( SystemOk );
}

[ explorer-1 @ 23.02.2007. 10:41 ] @
Pa ni sam zapravo nisam siguran što se dogodi. Pojavi se tray ikona i to sve, no nema programa. Program inače učitava jednu settings datoteku u kojoj piše koji skin mora učitati. Kad se windowsi dignu, tray ikon je dolje, no program se ne vidi (radi se o analognom satu) - pretpostavljam da se ne učitaju te datoteke.

Budem probao s tvojim kodom - no možeš li mi malo pojasniti što se u pojedinom isječku događa - jer glupo mi je c/p, hito bi to razumjeti tak da mogu sam znati što točno treba napisati. (ako ti se da)
[ X Files @ 23.02.2007. 11:06 ] @
Citat:

Pojavi se tray ikona i to sve, no nema programa.

kako misliš nema programa? Nema ga u status baru ili...
Tray ikona zapravo *nije* fizička zamena za program. Programi se zapravo i ne minimizuju u tray,
nego je to prigodna varka. Na jednoj strani praviš tray ikonu, a na drugoj skrivaš program. Moraš
sam da dodaš sav kod i logiku, kad želiš da se forma pojavi ili sakrije.

Citat:

Program inače učitava jednu settings datoteku u kojoj piše koji skin mora učitati.

Ovo je sasvim OK. Samo pazi da pri učitavanju, daš PUNU putanju do datoteke.

Citat:

Kad se windowsi dignu, tray ikon je dolje, no program se ne vidi (radi se o analognom satu) - pretpostavljam
da se ne učitaju te datoteke.

Da li se datoteke učitavaju ili ne učitavaju, tvoja je odgovornost da proveriš. Prosto stavi neki
ShowMessage(putanja_fajl) da se uveriš da se datoteka sa tim nazivom traži na pravom mestu,
zatim proveri povratnu vrednost Handle-a datoteke da li je ispravna i sl.

Citat:

Budem probao s tvojim kodom - no možeš li mi malo pojasniti što se u pojedinom isječku događa - jer glupo mi
je c/p, hito bi to razumjeti tak da mogu sam znati što točno treba napisati. (ako ti se da)


bool TNekiForm::HandleAutostart( bool Action ) // <--- hoćeš/nećeš, tj. kod tebe CheckBox2->Checked
Postoji povratna vrednost bool iz prostog razloga da se sazna da li je operacija uspela. Mnogi AV, AS i Firewall
programi su podešeni da blokiraju upise u pojedine delove Registry-ja. Slično tome, i pojedini Restricted Useri
na XP-u ne mogu upisivati na pojedina mesta. To bi trebalo svakako proveriti.

Sve ostalo je jako slično tvom kodu, sem što je ovde malo više zategnuto da se dozna ako nešto krene
naopako, i spreči sistemske izuzetke.

Primeti ekstra navodnike kod WriteString, jer može biti problema kod putanja sa blankovima.

Takođe u mom kodu upis ide u HKEY_LOCAL_MACHINE (tj, za sve Usere).

U svakom slučaju, jako slično kodu koji si i ti dao. Ne zaboravi CloseKey() u tvom kodu.

Poz.