PDA

Ver la Versión Completa : Problema para cerrar programa desde Api


angelp4492
18-12-2007, 15:54:16
Hola Como están?

Pues veran tengo un problema con este codigo que no me cierra los programas, aqui les explico.


procedure TForminformacion.tefxButton5Click(Sender: TObject);
var i:Integer;
begin
if ListVentanas.Selected = nil then
begin
Application.MessageBox('Selecciona algun proceso', 'No hay Seleccion.', MB_IconExclamation);
end
else
begin
Server.SendText('CerrarPrograma'+ListVentanas.Selected.Caption );
end;
end;


aqui seleciono el programa de un Tlistview y lo mando a un servidor
con el comando server.sendtext

esto me transmite la cadena de texto cerrarprograma+el handle de la ventana seleccionada.

y aqui hago el cierre


if copy(date,1,14)='CerrarPrograma' then
begin
delete(date, 1,14);
cierra:= date; Copy(date, 1, Pos('º', date)-1);
memo1.Lines.text:= cierra;
h := FindWindow(nil,pChar(date) );
if h <> 0 then
PostMessage(h, WM_Close, 0,0);
end;


esto es para cerrar el programa, bueno aqui es donde tengo el problema
en vez de cerrarse el programa selecionado me aparece la ventana de apagar o reiniciar

espero algun consejo gracias de antenmano

luisgutierrezb
18-12-2007, 16:29:27
Esta linea me llama la atencion:

cierra:= date; Copy(date, 1, Pos('º', date)-1);

en realidad son 2 lineas, y segun yo, ese copy te regresa el caption de la ventana que vas a cerrar, sin embargo date sigue valiendo lo mismo asi que no encuentra la ventana y como te regresa un null, quiere cerrar el sistema

angelp4492
18-12-2007, 18:10:03
Perdoon esa linea esta mal esque estaba realizando pruebas y se me ecapo
ya se donde tengo el problema,
como tengo una lista con el handle y el nombre de programa
por ejemplo 876 windows

pues cuando seleciono de la lista con estas instruciones.
procedure TForminformacion.tefxButton5Click(Sender: TObject);
begin
if ListVentanas.Selected = nil then
begin
Application.MessageBox('Selecciona algun proceso', 'NOhay proceso', MB_IconExclamation);
end
else
Server.SendText('CerrarPrograma'+Listventanas.Selected.Caption );
end;

selecino solo el 876 y esto es lo q mando,
y lo que deberia mandar es windows para q me lo cierre en la otra aplicacion.
alguna idea de como selecciono el windows en vez de 876
gracias