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 13-06-2007
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 22
cHackAll Va por buen camino
Cool Ok

Lastimosamente esta un poco complicado utilizando la API WinExec, La forma de hacerlo es listar los procesos y comprobar cuando el que creaste es terminado. El gran problema de esto (y no digo que se pueda hacer), es que puede existir un proceso con el mismo nombre que haya sido creado con anterioridad, en ese entonces que sucedera? cómo sabras cual creaste tu? obviamente se puede! pero no me parece la forma correcta.

Te dejo un par de APIs que te serán más util:

Código Delphi [-]
var
 si: TStartupInfo = (cb: SizeOf(TStartupInfo));
 pi: TProcessInformation;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
 CreateProcess(nil, 'c:\windows\system32\notepad.exe', nil, nil, False, 0, nil, nil, si, pi);
end;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
 if WaitForSingleObject(pi.hProcess, 0) = WAIT_OBJECT_0 then
  MessageBox(0, 'La aplicacion ha terminado, corre la siguiente!', nil, 0)
 else
  MessageBox(0, 'Todavia, espera!', nil, 0)
end;

0j0 que solo es para prueba, si no conoces la API te la explico: CreateProcess es la API que internamente utiliza el WinExec y otros. te permite un control un poco mas "avanzado" del nuevo proceso creado.

Yo pongo la estructura TStartupInfo como global pues la puedo inicializar en tiempo de diseño, si fuese local tendria que llamar a FillChar(0..., y luego a si.cb := SizeOf...
La estructura TProcessInformation es global pues debo poder saber el momento en que el nuevo proceso es liberado.

Finalmente el Button1 "corre" al Block de notas y el Button2 verifica si la aplicacion aún está en ejecucion con la API WaitForSingleObject utilizada para la sincronizacion (Mutex, Pipes, etc, etc).

Espero te sirva. Suerte!
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
SaveDialog con WinExec!! lduron Varios 2 16-06-2006 16:12:07
Ayuda con WinExec La__X C++ Builder 2 03-06-2006 05:23:13
Duda con Winexec sagarmar Varios 5 11-05-2006 12:58:17
WinExec karlita_cb Varios 3 18-05-2004 20:52:21
winexec en w2000 ogorut API de Windows 2 23-06-2003 18:41:58


La franja horaria es GMT +2. Ahora son las 03:11:46.


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