Ĺadny brzuch
Chciałem napisać sobie program do zmieniania ustawień w kompie, takich tylko dla mnie. Chcę zmienić watość w rejestrze, na forum znalazłem taki kod
TRegistry * registry =new TRegistry(); registry->RootKey = HKEY_CURRENT_USER; registry->OpenKey("\\Software\\Microsoft\\MediaPlayer\ \Preferences",false); registry->WriteString("StartInMediaGuide","0");
On działa, zmienia mi wartość. Moje pierwsze pytanko brzmi czy powinienem na końcu dodać
TRegistry * registry =new TRegistry(); registry->RootKey = HKEY_CURRENT_USER; registry->OpenKey("\\Software\\Microsoft\\MediaPlayer\ \Preferences",false); registry->WriteString("StartInMediaGuide","1"); registry->CloseKey();
CloseKey?I jak ustawić, gdy zmieniam wartość DWORD System szesnastkowy na dziesiętny
Wyczytałem również o prawach dostępu do rejestru czy trzeba tego używać czy będzie mi wszystko chodzić w takiej postaci.
CloseKey?I jak ustawić, gdy zmieniam wartość DWORD System szesnastkowy na dziesiętny
Wyczytałem również o prawach dostępu do rejestru czy trzeba tego używać czy będzie mi wszystko chodzić w takiej postaci.
Na końcu nie musi być CloseKey tylko delete ®istry;
(...)
TRegistry * registry =new TRegistry(); registry->RootKey = HKEY_CURRENT_USER; registry->OpenKey("\\Software\\Microsoft\\MediaPlayer\ \Preferences",false); registry->WriteString("StartInMediaGuide","1"); registry->CloseKey(); delete registry;
Czyli powinno być tak? I takim sposobem mogę zmieniać wartości Kluczy, nawet tych które istnieją???
Użytkownik Wojdav edytował ten post 21 grudzień 2005, 18:28
A najlepiej i jedno, i drugie.
Nie rozumiem tylko jednej rzeczy - po co tutaj znak "&" ? :huh: Wygląda to tak, jakbyś chciał zwolnić pamięć dla adresu wskaźnika, co jest w ogóle bezssensowne! Wystarczy:
delete registry;
Zresztą nie wiem nawet, czy poprzedni kod zadziałałby!
to działa ze znakiem & i bez.
tylko jest jeszce jeden problem.
takim sposobem mogę zminić wartość ciągu
a jak zmienić wartość DWORD i ustawieć odpowiedni system(dziesiętny lub szesnastkowy)
to działa ze znakiem & i bez.
tylko jest jeszce jeden problem.
takim sposobem mogę zminić wartość ciągu
a jak zmienić wartość DWORD i ustawieć odpowiedni system(dziesiętny lub szesnastkowy)
Przecież registry to wskaźnik, dlatego ten znak "&".
Gwarantuje Ci że poprzedni kod działa, sam sprawdz jak nie wierzysz.
Zapisujesz jakim Ci wygodnie, jeśli chcesz zapisać szesnastkowym dodaj 0x przed każdą zmienną np 0xB (czyli 11)
WriteInteger zapisuje DWORD...
Ja zmieniam wartość poleceniem RenameValue
registry->RenameValue("www","qqq");
tak da się zmienić nazwę ale jak zmienić Dane Wartości?
Użytkownik Wojdav edytował ten post 21 grudzień 2005, 22:47
Normalnie... zapisujesz nową wartość :rolleyes:
tak ale to zmieni mi nazwę Wartości ciągu.
A mi chodzi o zminę Danych Wartości instniejącego ciągu.
np. Wartość "sdasd" Dane Wartości "1" - zmienić na "0"
r.WriteInteger('sdasd',0);nadal Cię nie rozumiem...
ok już sobie poradziłe,
bardzo dziękuje wszystkim za pomoc
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
TRegistry * registry =new TRegistry(); registry->RootKey = HKEY_CURRENT_USER; registry->OpenKey("\\Software\\Microsoft\\MediaPlayer\ \Preferences",false); registry->WriteString("StartInMediaGuide","0");
On działa, zmienia mi wartość. Moje pierwsze pytanko brzmi czy powinienem na końcu dodać
TRegistry * registry =new TRegistry(); registry->RootKey = HKEY_CURRENT_USER; registry->OpenKey("\\Software\\Microsoft\\MediaPlayer\ \Preferences",false); registry->WriteString("StartInMediaGuide","1"); registry->CloseKey();
CloseKey?I jak ustawić, gdy zmieniam wartość DWORD System szesnastkowy na dziesiętny
Wyczytałem również o prawach dostępu do rejestru czy trzeba tego używać czy będzie mi wszystko chodzić w takiej postaci.
CloseKey?I jak ustawić, gdy zmieniam wartość DWORD System szesnastkowy na dziesiętny
Wyczytałem również o prawach dostępu do rejestru czy trzeba tego używać czy będzie mi wszystko chodzić w takiej postaci.

Na końcu nie musi być CloseKey tylko delete ®istry;
(...)

TRegistry * registry =new TRegistry(); registry->RootKey = HKEY_CURRENT_USER; registry->OpenKey("\\Software\\Microsoft\\MediaPlayer\ \Preferences",false); registry->WriteString("StartInMediaGuide","1"); registry->CloseKey(); delete registry;
Czyli powinno być tak? I takim sposobem mogę zmieniać wartości Kluczy, nawet tych które istnieją???
Użytkownik Wojdav edytował ten post 21 grudzień 2005, 18:28
A najlepiej i jedno, i drugie.
Nie rozumiem tylko jednej rzeczy - po co tutaj znak "&" ? :huh: Wygląda to tak, jakbyś chciał zwolnić pamięć dla adresu wskaźnika, co jest w ogóle bezssensowne! Wystarczy:
delete registry;
Zresztą nie wiem nawet, czy poprzedni kod zadziałałby!

to działa ze znakiem & i bez.
tylko jest jeszce jeden problem.
takim sposobem mogę zminić wartość ciągu
a jak zmienić wartość DWORD i ustawieć odpowiedni system(dziesiętny lub szesnastkowy)
to działa ze znakiem & i bez.
tylko jest jeszce jeden problem.
takim sposobem mogę zminić wartość ciągu
a jak zmienić wartość DWORD i ustawieć odpowiedni system(dziesiętny lub szesnastkowy)

Przecież registry to wskaźnik, dlatego ten znak "&".
Gwarantuje Ci że poprzedni kod działa, sam sprawdz jak nie wierzysz.

Zapisujesz jakim Ci wygodnie, jeśli chcesz zapisać szesnastkowym dodaj 0x przed każdą zmienną np 0xB (czyli 11)

WriteInteger zapisuje DWORD...
Ja zmieniam wartość poleceniem RenameValue
registry->RenameValue("www","qqq");
tak da się zmienić nazwę ale jak zmienić Dane Wartości?
Użytkownik Wojdav edytował ten post 21 grudzień 2005, 22:47
Normalnie... zapisujesz nową wartość :rolleyes:
tak ale to zmieni mi nazwę Wartości ciągu.
A mi chodzi o zminę Danych Wartości instniejącego ciągu.
np. Wartość "sdasd" Dane Wartości "1" - zmienić na "0"
r.WriteInteger('sdasd',0);nadal Cię nie rozumiem...
ok już sobie poradziłe,
bardzo dziękuje wszystkim za pomoc