OpenDocument

From Free Pascal wiki
Revision as of 19:05, 2 January 2020 by Bart (talk | contribs) (→‎Description: Removed warning for Lazarus versions < 1.0.8)
Jump to navigationJump to search

Definition

Unit: Lazarus lclintf

function OpenDocument(APath: String): Boolean;

Official documentation: [1]

Description

opendocument opens a document/file with the default viewer/editor registered with the operating system for that file/file extension. E.g. on Windows, the code will use the registry to look up the file association for the extension.

Example

uses 
...
lclintf
...
OpenDocument('readme.pdf');

Win NT "File names with spaces" workaround

The following is a simple function you can experiment with to do a similar job for file names with spaces. It is derived directly from OpenURL in <your lazarus install>\lcl\include\sysenvapis_win.inc, and has variations for wince and win9x removed - if you need those, see the original file. Experiment with is emphasised - it has only been tested for my particular use-case on windows 7. It does not seem to need the filename quoted.

uses windows;

function OpenFileDoc(Doc: String): Boolean;
var
  ws: WideString;
begin
  Result := False;
  if Doc = '' then Exit;
  ws := UTF8Decode(doc);
  Result := ShellExecuteW(0, 'open', PWideChar(ws), nil, nil, SW_SHOWNORMAL) > 32;
end;