Execute hozzárendelés nélkül

A shellexecute( hozzárendelés alapján indítja el az applikációt, az EXE hozzárendelése a %1 %*. A lenti példában közvetlen indítok el egy programfájlot, például a Project1.exe -t átkeresztelem Project1.jpg -re, és ennek ellenére elindítom a programot.

uses
ShellApi...

{$R *.DFM}


procedure Execute(strProg: String);
var StartupInfo : TStartupInfo;
ProcessInfo : TProcessInformation;
ExitCode : DWORD;
begin
StrPCopy(CmdLine, strProg);
FillChar(StartupInfo, SizeOf(StartupInfo), 0);
StartupInfo.cb := SizeOf(StartupInfo);
StartupInfo.wShowWindow := SW_SHOWMINIMIZED;
StartupInfo.dwFlags := STARTF_USESHOWWINDOW;
CreateProcess(nil, PChar(CmdLine), nil, nil, False, 0, nil, nil,
StartupInfo, ProcessInfo);
CloseHandle(ProcessInfo.hThread);
repeat
Application.ProcessMessages;
until not GetExitCodeProcess(ProcessInfo.hProcess, ExitCode) or
(ExitCode <> STILL_ACTIVE);
CloseHandle(ProcessInfo.hProcess);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
execute('c:\Project1.jpg');
end;

end.