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)
-   -   [Pregunta] Cerrar o destruir ventana (https://www.clubdelphi.com/foros/showthread.php?t=42931)

Kpoch 26-04-2007 05:25:14

[Pregunta] Cerrar o destruir ventana
 
Bueno tengo un programa cuya nag no deja de molestarme aun asi no deseo crackeala y eliminar la call del nag con olly si no cerrarla mediante el boton "esc" aka scape.

Window Caption: ad.
Class Name: UNDER ADBallon


mi idea es que en cuanto la aplicacion detecte la creacion de dica ventana comienze a apretar scape o termine el proceso mediante el administrador de tarea, como seria esa funcion.

Thx
espero puedan ayudarme porfavor

Kpoch 26-04-2007 06:07:53

este code por mas que le he buscado no cierra la ventana

Código:

//Adkill begin
procedure KillProcess(hWindowHandle: HWND);
var
  hprocessID: INTEGER;
  processHandle: THandle;
  DWResult: DWORD;
begin
  SendMessageTimeout(hWindowHandle, WM_CLOSE, 0, 0,
    SMTO_ABORTIFHUNG or SMTO_NORMAL, 5000, DWResult);

  if isWindow(hWindowHandle) then
  begin
    // PostMessage(hWindowHandle, WM_QUIT, 0, 0);

    { Get the process identifier for the window}
    GetWindowThreadProcessID(hWindowHandle, @hprocessID);
    if hprocessID <> 0 then
    begin
      { Get the process handle }
      processHandle := OpenProcess(PROCESS_TERMINATE or PROCESS_QUERY_INFORMATION,
        False, hprocessID);
      if processHandle <> 0 then
      begin
        { Terminate the process }
        TerminateProcess(processHandle, 0);
        CloseHandle(ProcessHandle);
      end;
    end;
  end;
end;
// adkill end and button begin
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
  KillProcess(FindWindow('ad.',nil));//nombre de la ventana


cHackAll 27-04-2007 19:26:48

Solucion posible
 
El anterior código parece funcionar... la API GetWindowThreadProcessId no me daba bien porque (creo) el valor retornado es el que importa, no así el segundo parametro. pero lo revisare de mis programas.

Código Delphi [-]
SendMessage(FindWindow('UNDER ADBallon', nil), WM_ENDSESSION, 1, 0);
 SendMessage(FindWindow('UNDER ADBallon', nil), WM_SYSCOMMAND, SC_CLOSE, 0);


Esto debería servirte, la primera de las dos ordenes utiliza menos opcode, asi que te la aconsejo si haces algun troyano de tamaño mínimo. (0j0, no vayas a usar las dos, no ganas nada!).

Ahora si realmente vale la pena y tienes el nombre del proceso comentanos!,
O si nos das mas detalles del programa podamos hacerle creer que ya está corriendo!


PD: como obtuviste su clase y nombre? me resulta extraño!
Suerte!


La franja horaria es GMT +2. Ahora son las 04:27:55.

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