Eigener Registry editor ?!?
-
Du liegst völlig richtig soUrcerer, hab meinen code genauso aufgebaut wie du es oben beschrieben hast. Ich werde nochn bisl an der funktion rumbasteln, vielleicht find ich's ja irgendwie noch raus oder mach irgendwas anderes.
Falls noch irgendeiner ne idee zum "...3 Parameter..." hat würde mich das freuen!
Mfg 5kYw4lKeR
-
Doh !!!
Ich DeppDie funktion in meiner cpp hat natürlich 3parameter , aber in meiner .h datei hab ich keine parameter dran gehängt ich depp!!!
Hatte da nur drin stehn :void EnumRegistryKeys();
Aber jetz hab ich nen zweites problem, da isn unaufglöster externer Verweis:
SkyNetDlg.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: void __thiscall CSkyNetDlg::EnumRegistryKeys(struct HKEY__ *,class CString,class CStringArray *)" (?EnumRegistryKeys@CSkyNetDlg@@QAEXPAUHKEY__@@VCString@@PAVCStringArray@@@Z) Release/SkyNet.exe : fatal error LNK1120: 1 unaufgeloeste externe Verweise
PS: SkyNet , so heisst mein projekt
-
@Sgt. Nukem
Wenn du Objekte mit new anlegst, wird an dieser stelle der konstruktor aufgerufen. Wenn du dann irgendwann delete machst, wird der destruktor ausgeführt.
Bei Objekten, die innerhalb von klassen definiert sind, wird der konstruktor ausgeführt, wenn der konstruktor der klasse ausgeführt wird ... analog dazu der destruktor.
Allgemein gilt: nach ablauf der lebensdauer eines objekts wird sein destruktor aufgerufen.Und ja, es gibt auch referenzen.
Diese werden mit einem & markiert. z.b.
void TuWas(CStringArray& array) { // array ist zu benutzen wie ein Objekt, nicht wie ein Zieger. array.Add("test"); ... } CStringArray csaArray; TuWas( csaArray ); // nicht &csaArray
überprüf nochmal, ob in beiden dateien die Funktionen exact die gleichen Parameter haben. Wichtig ist auch, das du die Angabe der Klasse bei der Funktion nicht vergisst:
void CSkyNetDlg::EnumRegistryKeys(HKEY hkRootKey, CString cstrKeyFolder, CStringArray *pArray) { ... }
und nicht
void EnumRegistryKeys(HKEY hkRootKey, CString cstrKeyFolder, CStringArray *pArray) { ... }
Wenn das alles passt, bereinige mal dein Projekt, also lösche alle vom compiler erstellten dateien (im debug/release ordner), oder wähle "Bereinigen" aus dem VC++ Menu. Das kann unter umständen auch helfen.
grüsse
[ Dieser Beitrag wurde am 16.03.2003 um 13:33 Uhr von soUrcerer editiert. ]
-
Big thx 2 all, habt mir echt geholfen, ich kann jetz schön die registry auslesen und auch mit...:
m_ctlRegTree.InsertItem(cstrName,NULL,NULL,TVI_ROOT,TVI_LAST);
...Etwas hinzufügen, das problem ist nur, wie kann ich etwas wieder "unterverzeichnisse" davon machen, ich brauch dazu den string von dem objekt worauf ich geklickt habe, aber an den komme ich irgendwie nich ran.
Die funktion wenn man auf ein Objekt klickt hab ich schon gefunden, sie lautet:
OnSelchangingRegTree(NMHDR* pNMHDR, LRESULT* pResult)
Aber woher bekomm ich jetzt worauf ich geklickt habe???
Dann kann ich nämlich einfach den alten path mit dem neuen verzeichnis zusammenfügen und die funktion wieder mit dem neuen verzeichnis zum auslesen ausführen.mfg 5kYw4lKeR
PS: RegTree ist mein Steurerelement mit der Baum Ansicht
Update:
Hab noch was gefunden:
"m_ctlRegTree.GetSelectedItem()" gibt mir den handle von dem aktuellen selektierten item in der baumansicht zurück, kann mir mal jemand sagen wie ich aus diesem handle dann den string bekomme?[ Dieser Beitrag wurde am 16.03.2003 um 23:12 Uhr von 5kYw4lKeR editiert. ]
-
Ok, ich habs jetzt:
m_ctlRegTree.GetItemText(m_ctlRegTree.GetSelectedItem());
mfg 5kYw4lKeR
-
Mein Editor funktioniert nun , ist aber SEHR buggy.
Das Problem ist, dass ich erst keys selektieren muss, bevor ich die mit dem kleinen + erweitern kann. Weil ich sonst nicht an das handle von dem zu öffnenden objekt komme.
___________
| software |
| -a |
| +b |
| +c |
| +d |
-----------So sieht das im moment ca aus. Wie komme ich jetzt wenn ich zb "a" erweitere auf den Handle von "a", das ich grade erweitert habe?
Die Funktion zum erweitern lautet:
OnSelchangedRegTree(NMHDR* pNMHDR, LRESULT* pResult)
Ich habe es bis jetzt immer über GetSelectedItem(); gemacht, aber dann musste ich wie gesagt das objekt vorher makieren und dann erweitern, ansonsten hab ich ein problem
Plz Help !!!
mfg 5kYw4lKeR
[ Dieser Beitrag wurde am 18.03.2003 um 19:05 Uhr von 5kYw4lKeR editiert. ]
[ Dieser Beitrag wurde am 18.03.2003 um 19:06 Uhr von 5kYw4lKeR editiert. ]
[ Dieser Beitrag wurde am 18.03.2003 um 19:07 Uhr von 5kYw4lKeR editiert. ]
-
Kann oder will mir keiner helfen?
Wenn ihr mein Problem nich versteht dann fragt doch, aber bitte schweigt nicht 3 Tage lang. So komme ich nicht weiter
mfg 5kYw4lKeR
-
Wenn Du das '+' drückst, sendet das TreeCtrl doch TVN_SELCHANGING. Da steht doch das Handle des Items drin ... P.S. steht doch alles in der MSDN !
-
1. Warum sollte der TVN_SELCHANGING ausführen, die selektierung wird nämlich nicht geändert, es wird aber TVN_ITEMEXPANDING ausgeführt!!!
2. Finde ich kein handle oder ähnliches die der funktion übergeben wird und brauchbar sein könnte!!!
3. Finde ich in der MSDN keinen brauchbaren Satz darüber!!!
mfg 5kYw4lKeR
[ Dieser Beitrag wurde am 22.03.2003 um 16:11 Uhr von 5kYw4lKeR editiert. ]
-
Wenn irgendwer weiss wie ich das Handle, das TVN_ITEMEXPANDING
übergeben wird herausbekomme, bitte bei mir melden:
Icq: 172142755