Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   API de Windows (https://www.clubdelphi.com/foros/forumdisplay.php?f=7)
-   -   Problema para cerrar programa desde Api (https://www.clubdelphi.com/foros/showthread.php?t=51531)

angelp4492 18-12-2007 15:54:16

Problema para cerrar programa desde Api
 
Hola Como están?

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

Código Delphi [-]
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

Código Delphi [-]
 
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


La franja horaria es GMT +2. Ahora son las 01:57:57.

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