Registriert seit: 9. Jul 2005
Ort: Hohenaltheim
1.001 Beiträge
Delphi 2005 Personal
|
Re: Winzip aus Delphi starten
1. Dez 2005, 16:09
so, jetzt hab ich mal schnell eine Funktion geschrieben die das verknüpfte Programm zu einem beliebigen Typen zurückliefert:
Delphi-Quellcode:
function extractnamefromparam(params:string;index:integer):string;
var
i:integer;
ress:array of string;
extra,act:boolean;
const
seperator:char='"';
extraseperator:char=' ';
begin
setlength(ress,1);
extra:=true;
for i:=1 to length(params) do begin
if not extra then
//Falls innerhalb eines ""-Bereichs
if params[i]<>seperator then
ress[length(ress)-1]:=ress[length(ress)-1]+params[i]
else begin
extra:=true;
setlength(ress,length(ress)+1);
end
else
begin
act:=false;
if params[i]=seperator then
begin
extra:=false;
act:=true;
end;
if params[i]=extraseperator then
begin
if ress[length(ress)-1]<>'' then
setlength(ress,length(ress)+1);
act:=true;
end;
if not act then
ress[length(ress)-1]:=ress[length(ress)-1]+params[i];
end;
end;
if trim(ress[length(ress)-1])='' then
setlength(ress,length(ress)-1);
try
result:=ress[index];
except end;
setlength(ress,0);
end;
function startlinkedprog(filetype:string):boolean;
var
r:tregistry;
filetypekey,progdir:string;
begin
result:=false;
r:=tregistry.Create(key_read);
filetypekey:='';
progdir:='';
try begin
r.RootKey:=HKEY_CLASSES_ROOT;
r.OpenKey('.'+filetype,false);
filetypekey:=r.ReadString('');
end except end;
if filetypekey='' then
exit;
try begin
showmessage(filetypekey+'\shell\open');
r.free;
r:=tregistry.create;
r.rootkey:=hkey_classes_root;
r.OpenKey(filetypekey+'\shell\open\command',false);
progdir:=r.ReadString('');
end except end;
r.free;
if progdir='' then
exit;
try
shellexecute(0,'open',pansichar(extractnamefromparam(progdir,0)),'','',1);
except end;
result:=true;
end;
Michael Enßlin Ich, der ich weiß, mir einzubilden, dass ich weiß, nichts zu wissen, weiß, dass ich nichts weiß.
Sokrates
|
|
Zitat
|