Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #3  
Antiguo 29-05-2014
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.806
Poder: 23
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Yo hago lo que comenta Neftalí.
Si quiero ejecutarlo sin más utilizo:
Código Delphi [-]
ShellExecute(FMMain.Handle, nil, PChar(Fichero), nil, nil, SW_SHOW)
Ten en cuenta que el primer parámetro debe ser de un formulario. Yo utilizo el principal de la aplicación.

En otro momento quiero ejecutarlo y ver si el usuario ha cambiado algo (modificó el .DOC o .XLS por ejemplo)
En este caso obtengo un HASH del archivo (MD5) ejecuto mediante un procedimiento RunAndWait y luego obtengo el HASH nuevamente. Si son iguales es que no se ha modificado.
La función CalcHash es de Seoane.
Código Delphi [-]
         MD5 := CalcHash(Fichero, haMD5);
         RunAndWait(FMMain.Handle, Fichero, '');

         if (MD5 <> CalcHash(Fichero, haMD5)) then
         begin
            if (MessageDlg('El documento ha cambiado. ¿Quiere reemplazar el archivo en la base de datos?', mtConfirmation,
              [mbYes, mbNo], 0, mbYes) = mrYes) then
            begin
[...]

Te dejo el código que utilizo. No recuerdo de dónde lo saqué:

Código Delphi [-]
function TDMMain.RunAndWait(Handle: THandle; Ejecutable, Argumentos: string; const RunDirectory: PChar = nil;
  const Visibilidad: integer = sw_shownormal): DWORD;
var
   Info: TShellExecuteInfo;
   pInfo: PShellExecuteInfo;
   ExitCode: WORD;
begin
   { Puntero a Info }
   { Pointer to Info }
   pInfo := @Info;
   { Rellenamos Info }
   { Fill info }
   with Info do
   begin
      cbSize := SizeOf(Info);
      fMask := SEE_MASK_NOCLOSEPROCESS;
      wnd := Handle;
      lpVerb := nil;
      lpFile := PChar(Ejecutable);
      { Parametros al ejecutable }
      { Executable parameters }
      lpParameters := PChar(Argumentos + #0);
      if RunDirectory = '' then
         lpDirectory := nil
      else
         lpDirectory := PChar(RunDirectory + #0);
      nShow := Visibilidad;
      hInstApp := 0;
   end;
   { Ejecutamos }
   { Execute }
   if not ShellExecuteEx(pInfo) then
      Result := GetLastError
   else
      Result := Info.hInstApp;

   { Esperamos que termine }
   { Wait to finish }
   repeat
      ExitCode := WaitForSingleObject(Info.hProcess, 500);
      Application.ProcessMessages;
   until (ExitCode <> WAIT_TIMEOUT);
end;

Última edición por duilioisola fecha: 29-05-2014 a las 12:51:25. Razón: Agrego link a Web de autor
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Abrir una aplicación Windows tbolzan API de Windows 2 12-12-2012 16:05:28
jpg longblob y report builder vroa74 Impresión 4 29-11-2011 19:49:58
Abrir aplicacion 1 vez kdemia Varios 21 27-05-2011 18:40:33
Opendialog abrir aplicacion!!! liz_hilton OOP 2 10-05-2005 17:41:32
Problema: Un tipo LONGBLOB me regresa sólo 32,769 bytes molarte MySQL 4 08-02-2005 19:19:59


La franja horaria es GMT +2. Ahora son las 20:20:42.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi