Couldn't you just utilise the extension-association built into Windows and
simply WinExe() the document -- not the application with the document as a
parameter? Assuming that the document has the right extension and Acrobat
Reader is the only application installed and associated with PDF files,
Windows should then just run up Acrobat Reader and display your document.
Another thing you could do is to look at the registry for applications
associated with PDF files and work your way back that way all the way to the
application complete with path and all.
-Andreas
-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]On
Behalf Of Edward Aretino
Sent: Wednesday, 4 July 2001 14:36
To: Multiple recipients of list delphi
Subject: Re: [DUG]: Running an external program
Hi Eion,
It sounds like you're looking for FindExecutable. Apparently there's some
small quirk in the WinAPI call, so the code (ShellFindExecutable) below
comes in handy. Thanks to Petr Vones (Team JEDI) for that.
I use it like this:
uses ShellAPI
...
strApp := ShellFindExecutable('C:\test.pdf', '');
ShellExecute(Application.Handle, 'OPEN', pchar(strApp),
pchar(strDocToOpenIfAny), nil, SW_SHOW);
Just make sure there is actually a 'C:\test.pdf' or whatever - even if you
just create one in name only. Although I'd be interested in a work-around
to that if anyone knows of one.
Ed
----------
function ShellFindExecutable(const FileName, DefaultDir: string): string;
var
Res: HINST;
Buffer: array[0..MAX_PATH] of Char;
P: PChar;
begin
FillChar(Buffer, SizeOf(Buffer), #0);
if DefaultDir = '' then P := nil else P := PChar(DefaultDir);
Res := FindExecutable(PChar(FileName), P, Buffer);
if Res > 32 then
begin
P := Buffer;
while PWord(P)^ <> 0 do
begin
if P^ = #0 then // FindExecutable replaces #32 with #0
P^ := #32;
Inc(P);
end;
Result := Buffer;
end else
Result := '';
end;
At 12:46 04/07/2001 +1200, you wrote:
>Hi
>
>We want to start an external program from within an Delphi app. The only
way
>we have found how to do it so far is via
>WINEXEC but this we can get this to work properly is but physically putting
>the full programs exe path in for it to start.
>The file type under explorer indicates that the extension of the file we
>wish to load is associated with the application i.e. PDF = acrobat reader.
>Is there another way, or other command, to available to start this app
>without having to have the full exe path in the program,
>as the application may not be in the same location on every PC.
>
>Eion McIntosh
>PPCS Ltd
>---------------------------------------------------------------------------
> New Zealand Delphi Users group - Delphi List - [EMAIL PROTECTED]
> Website: http://www.delphi.org.nz
>To UnSub, send email to: [EMAIL PROTECTED]
>with body of "unsubscribe delphi"
---------------------------------------------------------------------------
New Zealand Delphi Users group - Delphi List - [EMAIL PROTECTED]
Website: http://www.delphi.org.nz
To UnSub, send email to: [EMAIL PROTECTED]
with body of "unsubscribe delphi"
---------------------------------------------------------------------------
New Zealand Delphi Users group - Delphi List - [EMAIL PROTECTED]
Website: http://www.delphi.org.nz
To UnSub, send email to: [EMAIL PROTECTED]
with body of "unsubscribe delphi"