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)
-   -   Cerrando un Proceso (https://www.clubdelphi.com/foros/showthread.php?t=65008)

rxaxx9 15-11-2009 05:26:32

Cerrando un Proceso
 
Hola Amigos.. Udstedes me an Ayudado Mucho en Esto de Delphi...

Pero en Estos Momentos tengo una Gran Problema..


Ya Que yo Creo Un Timer..

Cuando Consiga el Proceso Lo Finalize..

OJO: cierro Procesos por Windows Name <> es el meteado que Quiereo.

Pero el Problema es Este
yo Quiero Que al Consegir Ese Proceso Cierre el Proceso y Abra una Pajina..

Pero al hacerlo me abre como 5 mil Pajinas :S

Espero Que me Ayuden:

Perdonen si ago Spam o incumplo Reglas..

bosster_018 15-11-2009 06:21:56

Explica mejor tu duda
 
No te entendí muy bien, pero lo que quieres hacer es detectar el proceso y cerrarlo. ¿Al mismo tiempo que abre una página Web?

Si es así puede servirte este pequeño ejemplo:

//Este ejemplo toma como proceso el "notepad.exe" pero puedes cambiarlo por el proceso que quieras

Antes que nada en las Uses de tu formulario desbes escribir
ShellApi y TlHelp32:

Código Delphi [-]
Uses
  TlHelp32, ShellApi;

En un timer con intervalo de 1 milisegundo escribes esto:

Código Delphi [-]
procedure TForm1.Timer1Timer(Sender: TObject);
var
  Abrir_Procesos : Integer;
  Leer_Procesos : TProcessEntry32;
  Seguir_Leyendo: BOOL;
  Preguntar : string;
begin
  // Abre y lee la lista de procesos en éste momento
  Abrir_Procesos := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  Leer_Procesos.dwSize := SizeOf(Leer_Procesos);

  // Acceder al primer proceso
  Seguir_Leyendo := Process32First(Abrir_Procesos, Leer_Procesos);

  // Condicion para recorer los procesos activos hasta que sea igual a 0
    while (Integer(Seguir_Leyendo) <> 0) do
    begin
      // Añadirlo a la lista
      preguntar:= ExtractFileName(Leer_Procesos.szExeFile);
      // Empezar a leer los procesos
      Seguir_Leyendo := Process32Next(Abrir_Procesos, Leer_Procesos);
      // Preguntar si encontró el proceso
        if Preguntar='notepad.exe' then
        begin
          //Elimina el proceso con tskill
          ShellExecute(Handle, nil, 'tskill', 'notepad', nil, SW_HIDE);
          //Acceder a una página Web
          ShellExecute(Handle, 'Open', 'Alguna_Página_WEB', nil, nil, S_NORMAL);
        end;
      end;
    // cerrar la lectura de procesos
    CloseHandle(Abrir_Procesos);
end;


Nota aparte: Me siento alegre de poder participar de nuevo en el foro, pues mi cuenta practicamente desapareció del servidor , pero no pasa nada... al final de cuenta soy novato y no tenía mucha participación, pero sigo siendo fiel al ClubDelphi ya que es una página de ayuda muy eficáz.
Además no quería dar problemas para reparar mi cuenta.

rxaxx9 15-11-2009 19:18:15

Cita:

Empezado por bosster_018 (Mensaje 346614)
No te entendí muy bien, pero lo que quieres hacer es detectar el proceso y cerrarlo. ¿Al mismo tiempo que abre una página Web?

Si es así puede servirte este pequeño ejemplo:

//Este ejemplo toma como proceso el "notepad.exe" pero puedes cambiarlo por el proceso que quieras

Antes que nada en las Uses de tu formulario desbes escribir
ShellApi y TlHelp32:

Código Delphi [-]Uses TlHelp32, ShellApi;


En un timer con intervalo de 1 milisegundo escribes esto:

Código Delphi [-]procedure TForm1.Timer1Timer(Sender: TObject); var Abrir_Procesos : Integer; Leer_Procesos : TProcessEntry32; Seguir_Leyendo: BOOL; Preguntar : string; begin // Abre y lee la lista de procesos en éste momento Abrir_Procesos := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); Leer_Procesos.dwSize := SizeOf(Leer_Procesos); // Acceder al primer proceso Seguir_Leyendo := Process32First(Abrir_Procesos, Leer_Procesos); // Condicion para recorer los procesos activos hasta que sea igual a 0 while (Integer(Seguir_Leyendo) <> 0) do begin // Añadirlo a la lista preguntar:= ExtractFileName(Leer_Procesos.szExeFile); // Empezar a leer los procesos Seguir_Leyendo := Process32Next(Abrir_Procesos, Leer_Procesos); // Preguntar si encontró el proceso if Preguntar='notepad.exe' then begin //Elimina el proceso con tskill ShellExecute(Handle, nil, 'tskill', 'notepad', nil, SW_HIDE); //Acceder a una página Web ShellExecute(Handle, 'Open', 'Alguna_Página_WEB', nil, nil, S_NORMAL); end; end; // cerrar la lectura de procesos CloseHandle(Abrir_Procesos); end;



Nota aparte: Me siento alegre de poder participar de nuevo en el foro, pues mi cuenta practicamente desapareció del servidor , pero no pasa nada... al final de cuenta soy novato y no tenía mucha participación, pero sigo siendo fiel al ClubDelphi ya que es una página de ayuda muy eficáz.
Además no quería dar problemas para reparar mi cuenta.


Gracias Amigo pero funciona Pero el Problema Que yo Quiero Cerrar los Procesos por WindowsName.. te doy un Ejemplo:
Cheat Engine.exe
el WIndows Name Quiero Cerrar Process List

De Todas Maneras Gracias..


La franja horaria es GMT +2. Ahora son las 23:19:09.

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