建关连用这个uses Registry, ShlObj;procedure TForm1.Button1Click(Sender: TObject);
const
  cMyExt = '.abc';
  cMyFileType = 'Project1.FileType';
var
  Reg: TRegistry;
begin
  Reg := TRegistry.Create;
  try
    // Set the root key to HKEY_CLASSES_ROOT
    Reg.RootKey := HKEY_CLASSES_ROOT;
    // Now open the key, with the possibility to create
    // the key if it doesn't exist.
    Reg.OpenKey(cMyExt, True);
    // Write my file type to it.
    // This adds HKEY_CLASSES_ROOT\.abc\(Default) = 'Project1.FileType'
    Reg.WriteString('', cMyFileType);
    Reg.CloseKey;
    // Now create an association for that file type
    Reg.OpenKey(cMyFileType, True);
    // This adds HKEY_CLASSES_ROOT\Project1.FileType\(Default)
    //   = 'Project1 File'
    // This is what you see in the file type description for
    // the a file's properties.
    Reg.WriteString('', 'Project1 File');
    Reg.CloseKey;
    // Now write the default icon for my file type
    // This adds HKEY_CLASSES_ROOT\Project1.FileType\DefaultIcon
    //  \(Default) = 'Application Dir\Project1.exe,0'
    Reg.OpenKey(cMyFileType + '\DefaultIcon', True);
    Reg.WriteString('', Application.ExeName + ',0');
    Reg.CloseKey;
    // Now write the open action in explorer
    Reg.OpenKey(cMyFileType + '\Shell\Open', True);
    Reg.WriteString('', '&Open');
    Reg.CloseKey;
    // Write what application to open it with
    // This adds HKEY_CLASSES_ROOT\Project1.FileType\Shell\Open\Command
    //  (Default) = '"Application Dir\Project1.exe" "%1"'
    // Your application must scan the command line parameters
    // to see what file was passed to it.
    Reg.OpenKey(cMyFileType + '\Shell\Open\Command', True);
    Reg.WriteString('', '"' + Application.ExeName + '" "%1"');
    Reg.CloseKey;
    // Finally, we want the Windows Explorer to realize we added
    // our file type by using the SHChangeNotify API.
    SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nil, nil);
  finally
    Reg.Free;
  end;
end;
/////////////////////////////////////////////////////
procedure TForm1.Button1Click(Sender: TObject);
var
  R : TRegIniFile;
begin
  R := TRegIniFile.Create('');
  with R do begin
    RootKey := HKEY_CLASSES_ROOT;
    WriteString('.myext','','MyExt');
    WriteString('MyExt','','Some description of MyExt files');
    WriteString('MyExt\DefaultIcon','','C:\MyApp.Exe,0');
    WriteString('MyExt\Shell','','This_Is_Our_Default_Action');
    WriteString('MyExt\Shell\First_Action','','This is our first action');
    WriteString('MyExt\Shell\First_Action\command','',
        'C:\MyApp.Exe /LotsOfParamaters %1');
    WriteString('MyExt\Shell\This_Is_Our_Default_Action','',
       'This is our default action');
    WriteString('MyExt\Shell\This_Is_Our_Default_Action\command',
       '','C:\MyApp.Exe %1');
    WriteString('MyExt\Shell\Second_Action','','This is our second action');
    WriteString('MyExt\Shell\Second_Action\command',
       '','C:\MyApp.Exe /TonsOfParameters %1');
    Free;
  end;
end;

解决方案 »

  1.   

    我指的是:比如我的程序叫ccc.exe 要打开 abc.txt
    那么我使用 ccc abc.txt就可以打开文件,是不是因改用(input, output)
      

  2.   

    用ParamStr和ParamCount得到参数。
      

  3.   

      i: Integer;
      for i := 0 to ParamCount  do
      begin
        writeln(paramstr(i));
      end;
    希望对你有help
      

  4.   

    var
      i: integer;
    begin
      for i := 1 to ParamCount do
      begin
        if FileExists(ParamStr(i)) then
        begin
          FsFileName := ParamStr(i);
          //Do your things ...
          break;
        end;
      end;