Nema tu puno mudrosti, postoji samo nekoliko upisa u Registry koje
treba postaviti, a nakon toga treba isprogramirati ponašanje.
Dakle, recimo da želimo da prijavimo *.trt ekstenziju, i nakon toga
da dupli klik na neku takvu datoteku učitava njen sadrzaj u TMemo.
Code:
// netestirano!
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TRegistry *pReg = NULL;
try
{
try
{
pReg = new TRegistry;
pReg->RootKey = HKEY_CLASSES_ROOT;
pReg->OpenKey( ".trt", true );
pReg->WriteString( "", "Probna aplikacija" );
pReg->OpenKey( "\\Probna aplikacija\\shell\\open\\command", true );
pReg->WriteString( "", ParamStr(0) + " %1" );
// ovo bi valjda trebalo da pridruzi i ikonu (nakon restarta)
pReg->OpenKey( "\\Probna aplikacija\\DefaultIcon", true );
pReg->WriteString( "", ParamStr(0) + ",0" );
ShowMessage( "Pridruživanje ekstenzije je uspelo!" );
}
catch ( const Exception &e )
{
ShowMessage( "Pridruživanje ekstenzije nije uspelo!" );
}
}
__finally
{
if ( pReg )
delete pReg;
}
}
...dalje, na sličan način se i otarašavamo tog pridruženja:
Code:
// netestirano!
void __fastcall TForm1::Button2Click(TObject *Sender)
{
TRegistry* pReg = NULL;
try
{
try
{
pReg = new TRegistry;
pReg->RootKey = HKEY_CLASSES_ROOT;
pReg->DeleteKey( ".trt" );
pReg->DeleteKey( "Probna aplikacija" );
ShowMessage( "Pridruživanje ekstenzije je raskinuto!" );
}
catch ( const Exception &e )
{
ShowMessage( "Raskidanje ekstenzije nije uspelo!" );
}
}
__finally
{
if ( pReg )
delete pReg;
}
}
... konačno, kod koji učitava sadržaj (može u konstruktor):
Code:
// netestirano!
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
if ( ParamCount() == 1 )
Memo1->Lines->LoadFromFile( ParamStr(1) );
}
... sada napravi neku (tekstualnu) datoteku i promeni joj ekstenziju u *.trt.
Nisam siguran, ako ti kompajler ne prepozna TRegstry, moraćeš da uključiš i
Code:
#include <Registry.hpp>
... ili nešto slično, ne mogu da se setim.