使用外部编辑器打开文件的正确代码

时间:2011-08-15 23:59:19

标签: inno-setup

以下代码是否正确,如果错误,请更正。

注意:我想用“WordPad.exe”而不是“Microsoft Office Word”打开文件,直到“Microsoft Office Word”成为默认程序。

我的代码:

function InitializeSetup: Boolean;
 var
   S: AnsiString;
 begin
   // Show the contents of Readme.txt (non Unicode) in a message box
   ExtractTemporaryFile('Info.rtf');
   Result := True;
 end;

 procedure AboutButtonOnClick(Sender: TObject);
 var
   ErrorCode: Integer;
 begin
  ShellExec('open', ExpandConstant('{tmp}\Info.rtf'), '', '', SW_SHOWNORMAL, ewNoWait,
 ErrorCode);
 end;

1 个答案:

答案 0 :(得分:1)

ShellExec('open','Documentname'....);将打开与文件扩展名相关联的程序。如果没有关联的程序,它将提示您选择要查看的程序。

您可以查找WordPad.exe,如果找到它,您可以直接使用WordPad.EXE调用ShellExec。然后将documentName作为参数传递。

已更新功能

procedure OpenDocumentInWordPad(Document : String);
var
 WordPad : String;   
 ErrorCode : Integer;
begin
   // Typical Location on XP and later.
   WordPad := ExpandConstant('{pf}') + '\Windows NT\Accessories\WordPad.exe'
   // Find word pad
   if Not FileExists(WordPad) then
   begin
     // Location in Windows 95/98
     WordPad := ExpandConstant('{pf}') + '\Accessories\WordPad.exe'
     if Not FileExists(WordPad) then
     begin
       // Fall back to anything associated with document.
       WordPad := Document;
       Document := '';
     end;
   end;

   if not ShellExec('open',WordPad,Document,'',SW_SHOW,ewNoWait,ErrorCode) then
   begin
      MsgBox(SysErrorMessage(ErrorCode),mbError,MB_OK);
   end;
end;