Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Pisanje u registry bazu

[es] :: C/C++ programiranje :: Pisanje u registry bazu

[ Pregleda: 4235 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Duke Nukem
Miroslav Mitic
dipl.mas.ing - tehnolog za hidrauliku/
REL, MAG panciranje i zavarivanje bla
bla...
Lazarevac

Član broj: 38933
Poruke: 143
*.absolutok.net.



+1 Profil

icon Pisanje u registry bazu19.12.2004. u 22:59 - pre 234 meseci
Da li neko zna zasto ovo parce koda ( kompajlovao BC++ Buileder 1 ) nece da otvori novi kljuc u registry i upise string

String temp = "test";
try
{
reg= new TRegistry;

reg->CreateKey("\\HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows\\CurrentVersion\\RunOnce\\Test");
if (reg->OpenKey("\\Software\\Microsoft\\Windows\\CurrentVersion\\RunOnce\\Test", true))
{
reg->WriteString("Test", temp);
reg->CloseKey();
}
}
catch(...)
{
Application->MessageBox("Problemi sa registry", "Naslov", IDIGNORE);
}
delete reg;

// predpostavljam da je problem trivijalan
// Hvala unapred

Tape loading error
 
Odgovor na temu

reiser

Član broj: 7895
Poruke: 2314



+102 Profil

icon Re: Pisanje u registry bazu19.12.2004. u 23:08 - pre 234 meseci
Verovatno lupam, ali zar CreateKey() vec ne vraca handle do key-a koji kreiras, tako da ti je pozivanje OpenKey() bespotrebno ??
 
Odgovor na temu

MilošV
Podgorica

Član broj: 7996
Poruke: 484
195.66.163.*



+1 Profil

icon Re: Pisanje u registry bazu20.12.2004. u 10:24 - pre 234 meseci
Sad, ne znam da li si pisao kod ponovo ili paste-ovao ovdje, ali ovo mi prvo pada u oci:
Code:
reg= new TRegistry;

Treba da stoji:
Code:
TRegistry *reg=new TRegistry;

Dalje, za novi TRegistry objekat, default je HKCU tj. moras pozvati i ovo:
Code:
reg->RootKey=HKEY_LOCAL_MACHINE;

nakon toga mozes da izbacis CreateKey tj. dovoljno je da stavis:
Code:
if(reg->OpenKey("Software\\Microsoft\\Windows\\CurrentVersion\\RunOnce\\Test", true))
{
...
}

i ovo 'true' ce ti "zavrsiti posao" tj. ako kljuc ne postoji, kreirace ga...

Na kraju, provjeri da ti nije kreirao kljuc:
HKEY_CURRENT_USER\HKEY_LOCAL_MACHINE\Software\... ;) :)
 
Odgovor na temu

Duke Nukem
Miroslav Mitic
dipl.mas.ing - tehnolog za hidrauliku/
REL, MAG panciranje i zavarivanje bla
bla...
Lazarevac

Član broj: 38933
Poruke: 143
*.absolutok.net.



+1 Profil

icon Pisanje u registry bazu20.12.2004. u 22:38 - pre 234 meseci
Hvala svima
napomena reg je vec bio deklarisan kao pointer u globalnim prom.
Probao sam Milosev nacin pre nego sto zam zapoceo temu, izgleda da je problem u registry --> RunOnce folderu. Jos uvek ga nisam provalio, ali izgleda da windows nakon startovanja brise sve vrednosti iz njega, tako da ga ne mozemo videti kada startujemo regedit.
Pozdrav svim ljubiteljima Borland C++ kompajlera.
Tape loading error
 
Odgovor na temu

Duke Nukem
Miroslav Mitic
dipl.mas.ing - tehnolog za hidrauliku/
REL, MAG panciranje i zavarivanje bla
bla...
Lazarevac

Član broj: 38933
Poruke: 143
*.yu
Via: [es] mailing liste



+1 Profil

icon Re: Pisanje u registry bazu21.12.2004. u 22:10 - pre 234 meseci
>
>
>
Postovani
Hvala ti na sugestijama, nakon izvesnog eksperimentisanja doneo sam
sledece zakljucke (Windows XP )
1. Problem je kljuc HKCUHKEY_LOCAL_MACHINESoftware...,
umesto njega treba pisati u kljuc Reg->RootKey = HKEY_CURRENT_USER;
i problema nema! Naime pravio sam aplikaciju koja se sama startuje ako
je bila iskljucena metodom nestanka struje napr.
2. Reg je definasan ranije kao pokazivac u globalu, a deo koda prikazan
na konferenciji je pastovan kao sto si dobro primetio.
Sada sve to lepo radi a kompletnu funkciju ti saljem pa mozes da je
nekada upotrebis

void TfrmMain::SetRegistry(int value)
{
TRegistry *Reg = new TRegistry;
try
{
Reg->RootKey = HKEY_CURRENT_USER;
if
(Reg->OpenKey("\Software\Microsoft\Windows\CurrentVersion\RunOnce",
true))
{
Reg->WriteString("MyPcProgram",""" + ParamStr(0) + """);
Reg->WriteInteger("Tip",value);
Reg->CloseKey();
}
}
catch(...)
{
//
}
delete Reg;
}

hvala : -)
Tape loading error
 
Odgovor na temu

NastyBoy
Bojan Nastic
UK

Član broj: 12041
Poruke: 895
*.plus.com.



+4 Profil

icon Re: Pisanje u registry bazu21.12.2004. u 23:18 - pre 234 meseci
Citat:
Probao sam Milosev nacin pre nego sto zam zapoceo temu, izgleda da je problem u registry --> RunOnce folderu. Jos uvek ga nisam provalio, ali izgleda da windows nakon startovanja brise sve vrednosti iz njega, tako da ga ne mozemo videti kada startujemo regedit.


Bash tako. "RunOnce" tome i sluzhi, da se uskladishte privremeni programi koje treba startovati samo jednom pri butovanju Windows-a i nikad vishe (korisno za instalacione programe, na primer)
Ako zhelish da se tvoj program startuje uvek sa Windows-om, napravi kljuch u "Run" grani.
 
Odgovor na temu

MilošV
Podgorica

Član broj: 7996
Poruke: 484
195.66.163.*



+1 Profil

icon Re: Pisanje u registry bazu22.12.2004. u 07:22 - pre 234 meseci
Hvala :)
BTW, primjer koji sluzi upravo tome sto tebi treba (iz bcb help-a):
The following example shows how to tell Windows to relaunch your application when Windows starts up if it was running when the system shut down.
When Windows starts up, it launches each application listed in the RunOnce key and then deletes the entry for that application. Therefore, you do not need to remove the entry written here.
Code:

void __fastcall TForm1::WMEndSession(TWMEndSession &Message)
{
  TRegistry *Reg = new TRegistry;
  try
  {
    Reg->RootKey = HKEY_CURRENT_USER;
    if (Reg->OpenKey("\\Software\\Microsoft\\Windows\\CurrentVersion\\RunOnce", true)
    {
      Reg->WriteString("MyApp","\"" + ParamStr(0) + "\"");
      Reg->CloseKey();
    }
  }
  __finally
  {
    delete Reg;
    TForm::WMEndSession(Message);

  }
}

In order for this method to be called, it must be declared in your main form class as follows:
Code:

class PACKAGE TForm1 : public TForm

{
  ...
protected:

BEGIN_MESSAGE_MAP
  MESSAGE_HANDLER(WM_ENDSESSION, TWMEndSession, WMEndSession)
END_MESSAGE_MAP(TForm)
};
 
Odgovor na temu

[es] :: C/C++ programiranje :: Pisanje u registry bazu

[ Pregleda: 4235 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.