Ver Mensaje Individual
  #4  
Antiguo 22-04-2005
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Reputación: 10
marcoszorrilla Va por buen camino
Aquí una muestra:
Código Delphi [-]
      This unit is based upon the well-known and largely used WinExecAndWait function The former
    WinexecAndWait function doesn't compile under Delphi 2.0 because the GetModuleUsage function is no longer
   supported under Win95.
   
     I have simply updated the previous code so that it works with Delphi 2.0 under Windows 95.
   With this function you can call Windows-based applications as well as Dos-based commands.
   That is 'c:\myapp\app32.exe' as well as command.com /c del *.bak'.
   
     This new WinexecAndWait32 is intended for Delphi 2.0 Win95 only, it works for me but you use it at
  your own risk:
   
      http://www.delphifaq.com/images/e1.gif
    http://www.delphifaq.com/images/e2.gif
    unit WinExc32;
   // Author    : Francis Parlant.
   // Update    : Bill Rinko-Gay
   // Parameters:
   //    Path: a null terminated string with the command line
   //    Visibility: Windows SHOW constant such as WS_RESTORE
   //    Timeout: DWORD time in miliseconds or INFINITE to wait forever 
   //
   // The previous version went into a loop, constantly checking to see
   // if the exec'ed program had terminated.  This version uses the Win95
   // API call to WaitForSingleObject to block processing until the
   // exec'ed program has terminated.  The return value will be either
   // an error code from the CreateProcess function, or the result
   // of the wait.
   
   interface
   
   uses Windows;
   
   function WinExecAndWait32(Path: PChar; Visibility: Word;
     Timeout : DWORD): integer;
   
   implementation
   
   function WinExecAndWait32(Path: PChar; Visibility: Word;
     Timeout : DWORD): integer;
   var
     WaitResult : integer;
     StartupInfo: TStartupInfo;
     ProcessInfo: TProcessInformation;
     iResult : integer;
   begin
     FillChar(StartupInfo, SizeOf(TStartupInfo), 0);
     with StartupInfo do
     begin
       cb := SizeOf(TStartupInfo);
       dwFlags := STARTF_USESHOWWINDOW or STARTF_FORCEONFEEDBACK;
       { you could pass sw_show or sw_hide as parameter: }
       wShowWindow := visibility;
     end;
     if CreateProcess(nil,path,nil, nil, False,
           NORMAL_PRIORITY_CLASS, nil, nil,
           StartupInfo, ProcessInfo) then
     begin
       WaitResult := WaitForSingleObject(ProcessInfo.hProcess, timeout);
       { timeout is in miliseconds or INFINITE if
         you want to wait forever }
       result := WaitResult;
     end
     else
     { error occurs during CreateProcess see help for details }
       result:=GetLastError;
   end;
   
   end.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.

Última edición por marcoszorrilla fecha: 22-04-2005 a las 23:12:06.
Responder Con Cita