PDA

Ver la Versión Completa : Terminate process


shoulder
27-05-2013, 19:28:22
Hola, tengo un problema, para hacer un backup necesito cerrar (o Matar proceso) desde el servidor a todos los usuarios que esten usando el programa empresa.exe.

Me revise el foro, use las funciones matarprocesos, killprocess, Killtask....

Cuando lo ejecuto el programa de matarproceso1.exe desde mi pc me cierra el programa empresa.exe (pero cierra solo el de mi pc), si lo ejecuto desde el servidor el archivo sigue tomado y falla el backup.


Probe poniendo el path, sin path, el servidor tiene windows server 2008.

Gracias.

look
27-05-2013, 19:38:04
¿No te saldria mejor mandar la orden por un socket?, asi desde el servidor le mandas la orden a los clientes de cerrarse desde el servidor

mira esto:

http://www.hackerdude.com/courses/delphi/Cap010.2.html

shoulder
27-05-2013, 20:47:09
Hola, pero como puedo saber porque socket esta corriendo el programa empresa.exe para cerrar los usuarios, porque en realidad no quiero crear un socket para enviar informacion, quiero cerrar uno especico donde este el programa.

Gracias.

nlsgarcia
27-05-2013, 23:35:03
shoulder,


...necesito cerrar (o Matar proceso) desde el servidor a todos los usuarios que esten usando el programa empresa.exe...


Revisa este código:

implementation

Uses ShellAPI;

procedure TForm1.Button1Click(Sender: TObject);
var
Command : String;
Parameters : String;

begin

Command := 'C:\Windows\System32\TaskKill.exe';
Parameters := '/S 127.0.0.1 /IM Calc.exe /T';
ShellExecute(Handle, nil, PChar(Command) , PChar(Parameters), nil, SW_HIDE);

end;

El código anterior finaliza todos los procesos y subprocesos en la IP 127.0.0.1 con el nombre Calc.exe (Calculadora de Windows) por medio de ShellExecute y el comando de Windows TaskKill.

Revisa estos links:

TaskKill : http://technet.microsoft.com/en-us/library/cc725602%28v=ws.10%29.aspx

TaskList : http://technet.microsoft.com/en-us/library/cc730909%28v=ws.10%29.aspx


Espero sea útil :)

Nelson.

PepeLolo
29-05-2013, 00:10:30
Hola, tengo un problema, para hacer un backup necesito cerrar (o Matar proceso) desde el servidor a todos los usuarios que esten usando el programa empresa.exe.

Me revise el foro, use las funciones matarprocesos, killprocess, Killtask....

Cuando lo ejecuto el programa de matarproceso1.exe desde mi pc me cierra el programa empresa.exe (pero cierra solo el de mi pc), si lo ejecuto desde el servidor el archivo sigue tomado y falla el backup.


Probe poniendo el path, sin path, el servidor tiene windows server 2008.

Gracias.

¿Qué BBDD usas?, porque sí se trata de Interbase o Firebird, puedes enviar un evento desde la BBDD y capturarlo en la aplicación para que estas se cierren por sí mismas.

shoulder
29-05-2013, 15:20:56
Muchas gracias por responder, al final lo solucione con un bat que corro desde delphi primero, antes de copiar para cerrar el archivo, el bat que hice es este :
psfile "C:\compania\empresa.exe" -c
y asi anduvo perfecto, cierra y copia bien.

Probe lo que me sugirieron pero no se porque aunque yo cerraba el programa por tiempo sin usar, usaba el Taskill, cerraba procesos..etc, siempre en el servidor quedaba tomado el archivo por el administrador (server 2003), yo uso delphi 7 - mysql.

Gracias.