Ver Mensaje Individual
  #2  
Antiguo 13-01-2015
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Reputación: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Esto parece que es porque no sabe de dónde sacar la variable Handle. Prueba con el Handle de a aplicación o del formulario principal.
Yo lo hago asi:

Código Delphi [-]
// utiliza uses Windows para las variables de error

procedure TDMMain.AbrirArchivo(Archivo: string);
var
  Resultado : word;
begin
  Resultado := ShellExecute(Application.Handle, 'open', PChar(Archivo), nil, nil, SW_SHOW);
  // Si Resultado es menor o igual a 32 el procedimiento ha fallado
  // Si es mayor, Resultado es el Handle de la aplicación abierta o del servidor DDE
  case Resultado of
     0: ShowMessage(_('El sistema operativo no tiene memoria o recursos suficiente.')); // The operating system is out of memory or resources
     ERROR_BAD_FORMAT: ShowMessage(_('El archivo EXE es inválido.')); // The .EXE file is invalid (non-Win32 .EXE or error in .EXE image)
     SE_ERR_ACCESSDENIED: ShowMessage(_('El sistema operativo denego el acceso al archivo especificado.')); // The operating system denied access to the specified file
     SE_ERR_ASSOCINCOMPLETE: ShowMessage(_('El archivo asociado es incompatible o inválido.')); //The filename association is incomplete or invalid
     SE_ERR_DDEBUSY: ShowMessage(_('La transacción DDE no pudo completarse porque otra transaccion DDE estaba siendo procesada.')); // The DDE transaction could not be completed because other DDE transactions were being processed
     SE_ERR_DDEFAIL: ShowMessage(_('La transacción DDE falló.')); // The DDE transaction failed
     SE_ERR_DDETIMEOUT: ShowMessage(_('La transacción DDE no pudo completarse porque ha expirado.')); // The DDE transaction could not be completed because the request timed out
     SE_ERR_DLLNOTFOUND: ShowMessage(_('La librería dinamica especificada no se ha encontrado.')); // The specified dynamic-link library was not found
     SE_ERR_FNF: ShowMessage(_('El archivo no ha sido encontrado.')); //The specified file was not found
     SE_ERR_NOASSOC: ShowMessage(_('No hay ninguna aplicación asociada con la extensión del archivo dado.')); // There is no application associated with the given filename extension
     SE_ERR_OOM: ShowMessage(_('No ha habido memoria suficiente para completar la operación.')); // There was not enough memory to complete the operation
     SE_ERR_PNF: ShowMessage(_('No se ha encontrado la carpeta especificada.')); // The specified path was not found
     SE_ERR_SHARE: ShowMessage(_('Error de permisos.')); // A sharing violation occurred
  end;
end;
Responder Con Cita