Правильный код для открытия файла с помощью внешнего редактора - PullRequest
2 голосов
/ 16 августа 2011

Является ли следующий код правильным или нет, и, если он неправильный, исправьте его.

Примечание. Я хочу открыть файл с помощью «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 Ответ

1 голос
/ 16 августа 2011

ShellExec('open','Documentname'....); откроется с программой, связанной с расширением файла. Если программа не связана, вам будет предложено выбрать, с какой программой вы хотите ее просматривать.

Вы можете найти WordPad.exe и, если он найден, вы можете вызвать ShellExec, используя WordPad.EXE напрямую. Затем передайте 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...