07. august 2002 - 01:20Der er
24 kommentarer og 1 løsning
Tilføj til registreringsdatabase / tilføj genvej til startmenu
Ved ikke hvilken løsning der er nemmest, men mit program skal, når det køres første gang (det opretter en fil efter første kørsel, og hvis det ikke kan finde filen, ved jeg jo så det er første kørsel) oprette enten en genvej i startmenuen -> Programmer -> Start ELLER tilføje sig selv i registreringsdatabasen, under windows -> Run (ms og en helt masse andet inden windows). Men hvad er nemmest og hvordan gør man ?
Man benytter typisk et program som InstallShield til at kopiere programfiler over, samt at registrere dll'er. Et sådant program kan ligeledes lave de tilføjelser til Startmenuen og de genveje du ønsker og så er det let..! Du skal tænke på, at der kan være forskel i fremgangsmåden hvorpå det gøres, i forskellige versionr af et operativsystem. Det tager et sådant program også højde for... InstallShield følger fx med Visual Studio...
Hmmm tror ikke installshield fulgte med mit borland c++ builder 4.0 (er ret overbevist faktisk), øv :( Men du har da ret i at der er forskel på at køre win 95 & win XP.
Ja, så er der jo ingen grund til at oprette den (selv om det nu ikke gør noget at prøve igen!!!). Så kan du nøjes med flg.:
1. Åbn nøglen 2. Sæt værdien 3. Luk nøglen.
Du åbner den med flg. kald:
LONG RegOpenKey( HKEY hKey, // handle to open key LPCTSTR lpSubKey, // address of name of subkey to open PHKEY phkResult // address of handle to open key );
sætter med flg:
LONG RegSetValue( HKEY hKey, // handle to key to set value for LPCTSTR lpSubKey, // address of subkey name DWORD dwType, // type of value LPCTSTR lpData, // address of value data DWORD cbData // size of value data );
og lukker med:
LONG RegCloseKey( HKEY hKey // handle to key to close );
har lige prøvet og får de her fejl: [C++ Error] Unit1.cpp(25): E2451 Undefined symbol 'm_szServiceName'. [C++ Error] Unit1.cpp(36): E2467 '_fastcall TForm1::Button1Click(TObject *)' cannot return a value. [C++ Error] Unit1.cpp(42): E2451 Undefined symbol 'GET_CHANNEL'. [C++ Error] Unit1.cpp(43): E2109 Not an allowed type.
l 25: strcat(szKey, m_szServiceName); l 36: if (dwErr != ERROR_SUCCESS) return false; l 42: (BYTE*)&GET_CHANNEL, l 43: sizeof(GET_CHANNEL));
Faktisk ikke, for 5 dage siden brændte jeg mobo, cpu & RAM af, og har først nu fået det op at køre igen. Men med lidt held får jeg det tjekket i aften (har kun lige fået windows installeret igen, og mangler stadigvæk meget....)
Hmmm er kommet videre, det jeg skal er at tilføje en REG_SZ value. Men hvis jeg bruger GET_CHANNEL som buffer for det der skal skrives til key'en, og så gør: char *GET_CHANNEL; Så kan den kun være på 4 tegn ? Hvis jeg så istedet gør: char GET_CHANNEL[1024]; så kan den godt være lang, men der kommer følgende warning: [C++ Warning] Unit1.cpp(38): W8079 Mixing pointers to different 'char' types.
Og btw. nu jeg har dig, hvordan finder jeg nemmest den fulde sti inkl eller excl .exe filens navn ? (Idet jeg skal tilføje den til hkey_local_machine\microsoft\windows\current version\run)
Du skal enten bruge char GET_CHANNEL[1024] (ell. evt. kortere end 1024), eller du skal selv allokere plads: char* MyPointer; MyPointer = new char[1024];
jeg vil lige forsøge den sidstnævnte metode, synes heller ikke det kunne være rigtigt at jeg ikke skulle allokere plads i pointeren, men vidste ikke hvordan :D
Hmm den nosser stadigvæk i det. Hvis jeg bruger den der med char* og derefter new char, så ender jeg med samme resultat som mypointer[1024] Og resultatet er at den key der bliver oprettet kommer til at hedde mypointer... (altså 3 punktummer) Hvis jeg bruger *mypointer, så bliver teksten kun 4 tegn lang.
Hmmm hvordan får jeg så længden af min ValueBuffer* ?
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.