Einzelnen Beitrag anzeigen

ichbins

Registriert seit: 9. Jul 2005
Ort: Hohenaltheim
1.001 Beiträge
 
Delphi 2005 Personal
 
#7

Re: Winzip aus Delphi starten

  Alt 1. Dez 2005, 15: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
  Mit Zitat antworten Zitat