CYFROWY BARON • PROGRAMOWANIE • Zobacz wątek - Powiązanie plików z programem

Powiązanie plików z programem

dział ogólny

Powiązanie plików z programem

Nowy postprzez Corvis » czwartek, 13 października 2011, 10:26

Witam,

Na w serwisie Cyfrowy Baron znalazłem taką poradę: http://programowanie.cal.pl/cyfbar/api2.html#api17

KOD cpp:     UKRYJ  
   
    TRegistry *Reg = new TRegistry();
    Reg->RootKey = HKEY_CLASSES_ROOT;
    Reg->OpenKey(".roz", true);
    Reg->WriteString("", "roz_auto_file");
    Reg->CloseKey();

    //otwarcie pliku po jego dwukrotnym kliknięciu w Eksploratorze
    Reg->OpenKey("roz_auto_file", true);
    Reg->WriteString("", "opis rozszerzenia");
    Reg->OpenKey("shell", true);
    Reg->WriteString("", "open");
    Reg->OpenKey("open", true);
    Reg->WriteString("", "&Open");
    Reg->OpenKey("command", true);
    Reg->WriteString("", ParamStr(0) + " \"\%1\"");
    Reg->CloseKey();

    //kojarzenie ikony z rozszerzeniem (taka sama jak ikona programu)
    Reg->OpenKey("roz_auto_file", true);
    Reg->OpenKey("DefaultIcon", true);
    Reg->WriteString("", ParamStr(0) + ",0");
    Reg->CloseKey();
    delete Reg;
 


Problem jest taki, że nie bardzo rozumiem o co tu chodzi. Jak napisać kod który powiąże 2 różne rozszerzenia ?? zmienić tylko Reg->OpenKey(".roz", true); na Reg->OpenKey(".roz2", true); ???
I kolejne pytanko jak podstawić dowolną ikonę do danego rozszerzenia - nie domyślną.


Pozdrawiam
"Sukcesy trwają, dopóki ich ktoś nie spieprzy. Porażki są wieczne"

Dr Gregory House
Avatar użytkownika
Corvis
Programista I
Programista I
 
Posty: 880
Dołączył(a): sobota, 26 lipca 2008, 00:31
Podziękował : 80
Otrzymał podziękowań: 30
System operacyjny: WINDOWS 7 64-bity
Kompilator: Praca - C++ Builder XE2 ENTERPRISE - Update 4, Dom - C++ Builder XE4 - Uddate 1
Gadu Gadu: 0
    Windows VistaChrome

Re: Powiązanie plików z programem

Nowy postprzez Corvis » czwartek, 13 października 2011, 14:44

Skróciłem trochę ten kod:

KOD cpp:     UKRYJ  
void __fastcall TFrmGui::PowiazRozserzenia(String Ext) {
    TRegistry *Reg = new TRegistry();
    Reg->RootKey = HKEY_CLASSES_ROOT;
    Reg->OpenKey("." + Ext, true);
    Reg->WriteString("", Ext + "file") ;
    Reg->CloseKey();
    Reg->CreateKey(Ext + "file") ;
//    Reg->OpenKey(Ext + "file\\DefaultIcon", true) ;
//    String PlikiIkon = ExtractFilePath(Application->ExeName) + "Icon\\" + Ext.LowerCase() +".ico";
//    Reg->WriteString("", PlikiIkon+ ",0") ;
//    Reg->CloseKey();
    Reg->OpenKey(Ext + "file\\shell\\open\\command", true) ;
    Reg->WriteString("",Application->ExeName+" \"%1\"") ;
    Reg->CloseKey();
    delete Reg;        
}



Problem jest też taki, że to wszystko nie działa pod WINDOWS 7 jeżeli jest uruchamiane jako zwykły user ;(
"Sukcesy trwają, dopóki ich ktoś nie spieprzy. Porażki są wieczne"

Dr Gregory House
Avatar użytkownika
Corvis
Programista I
Programista I
 
Posty: 880
Dołączył(a): sobota, 26 lipca 2008, 00:31
Podziękował : 80
Otrzymał podziękowań: 30
System operacyjny: WINDOWS 7 64-bity
Kompilator: Praca - C++ Builder XE2 ENTERPRISE - Update 4, Dom - C++ Builder XE4 - Uddate 1
Gadu Gadu: 0
    Windows VistaChrome

Re: Powiązanie plików z programem

Nowy postprzez Corvis » piątek, 14 października 2011, 23:17

Problem rozwiązany - zrobiłem to instalatorem INNOSETUP. Jak ktoś chce mogę wkleić skrypt
"Sukcesy trwają, dopóki ich ktoś nie spieprzy. Porażki są wieczne"

Dr Gregory House
Avatar użytkownika
Corvis
Programista I
Programista I
 
Posty: 880
Dołączył(a): sobota, 26 lipca 2008, 00:31
Podziękował : 80
Otrzymał podziękowań: 30
System operacyjny: WINDOWS 7 64-bity
Kompilator: Praca - C++ Builder XE2 ENTERPRISE - Update 4, Dom - C++ Builder XE4 - Uddate 1
Gadu Gadu: 0
    Windows VistaChrome

Re: Powiązanie plików z programem

Nowy postprzez Cyfrowy Baron » sobota, 15 października 2011, 09:05

Skrypt dla instalatora wraz z opisem proponuję umieścić w dziale Instalatory.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Ogólne problemy z programowaniem

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 0 gości