26. januar 2007 - 18:17Der er
6 kommentarer og 1 løsning
Forbind med .TD3
Jeg søger en løsning for ved at trykke på en knap at forbinde mit program med filer som ender på .TD3 så det er mit program som åbner. Der skal bruges registreringsdatabasen tror jeg. Svaret skal være færdigt ( lige til at kopire ind og så complie ) og må meget gerne indeholde nogle // som forklaring på hvad der sker, jeg er nemlig helt ny til registreringsdatabser.
I et inbound callcenter, hvor identiteten på den, der ringer ind, skal bekræftes, kan kontrollen nu foregå i telefonkøen. Det understøtter fem centrale KPI'er for callcentre.
function TfrmMain.AssociateExtension(const aApplicationName, aApplicationTitle, aExtension, aFilename : string) : integer; begin with TRegistry.Create do try RootKey := HKEY_CLASSES_ROOT;
if OpenKey('\' + aApplicationName,true) then begin WriteString('',aApplicationTitle); CloseKey; end;
if OpenKey('\' + aExtension,true) then begin WriteString('',aApplicationName); CloseKey; end;
if OpenKey('\'+aApplicationName,true) then begin WriteString('shell\open\command',aFilename + ' %1'); CloseKey; end; finally Free; end; end;
Stone kom først - man kan sgu da heller ikke tillade sig at slukke PC'en. Har modificeret lidt ved min rutine så nu er den helt analog med den stone refererer til
I øvrigt underligt at der ikke er et API-kald der registrerer lige netop det. Det er jo ikke for at windows API'en mangler procedurer og funktioner.
function TfrmMain.AssociateExtension(const aApplicationName, aApplicationTitle, aExtension, aFilename : string) : integer; begin result := false; with TRegistry.Create do try RootKey := HKEY_CLASSES_ROOT;
if OpenKey('\' + aApplicationName,true) then begin WriteString('',aApplicationTitle); CloseKey; end;
if OpenKey('\' + aExtension,true) then begin WriteString('',aApplicationName); CloseKey; end;
if OpenKey('\'+aApplicationName,true) then begin WriteString('shell\open\command',aFilename + ' %1'); CloseKey; end; // Notify the world. Shout it out: I have changed! SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nil, nil); result := true; finally Free; end; end;
stone jeg har prøvet dit forslag. har denne kode: procedure TForm1.RegisterFileType ; var reg: TRegistry; begin reg := TRegistry.Create; try reg.RootKey := HKEY_CLASSES_ROOT; //create a new key --> .pci reg.OpenKey('.' + prefix, True); try //create a new value for this key --> pcifile reg.Writestring('', prefix + 'file'); finally reg.CloseKey; end; //create a new key --> pcifile reg.CreateKey(prefix + 'file'); //create a new key pcifile\DefaultIcon reg.OpenKey(prefix + 'file\DefaultIcon', True); //and create a value where the icon is stored --> c:\project1.exe,0 try reg.Writestring('', exepfad + ',0'); finally reg.CloseKey; end; reg.OpenKey(prefix + 'file\shell\open\command', True); //create value where exefile is stored --> c:\project1.exe "%1" try reg.Writestring('', exepfad + ' "%1"'); finally reg.CloseKey; end; finally reg.Free; end; SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nil, nil); end;
procedure TForm1.ForbindmedTD31Click(Sender: TObject); var dir : string; begin dir := ExtractFilePath(Application.ExeName); RegisterFileType('TD3', 'c:\project1.exe'); end;
men ved: RegisterFileType('TD3', 'c:\project1.exe'); giver den fejlen [Pascal Error] Unit1.pas(258): E2034 Too many actual parameters kan i hjælpe??, prøver hrc's forslag om lidt.
procedure TForm1.ForbindmedTD31Click(Sender: TObject); var dir : string; begin dir := ExtractFilePath(Application.ExeName); RegisterFileType('TD3', (dir + 'project1.exe')); end;
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.