Hola fracapa.
Todo lo referente a la función
ShellExecute lo encontrarás [
aquí].
La función devuelve un resultado que, de fallar el llamado, podes revisar para ver cuál es el problema .
Un ejemplo:
Código Delphi
[-]
uses ShellApi;
...
var
lpOperation : PChar;
lpFile : PChar;
lpParameters: PChar;
lpDirectory : PChar;
nShowCmd : Integer;
RetValue : Integer;
begin
lpOperation := 'open';
lpFile := 'NOTEPAD.EXE';
lpParameters := 'C:\WINDOWS\WIN.INI';
lpDirectory := 'C:\WINDOWS';
nShowCmd := SW_NORMAL;
RetValue := ShellExecute(Handle,
lpOperation,
lpFile,
lpParameters,
lpDirectory,
nShowCmd);
if RetValue <= 32 then
ShowMessage(SysErrorMessage(GetLastError())); end;
(*) También podrías evaluar el valor de retorno mediante la declaración
if o
case en lugar de la función
GetLastError.
El ejemplo admite varias optimizaciones ya que prioricé la didactica sobre la eficiencia.
Saludos