Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-09-2014
force1758 force1758 is offline
Miembro
 
Registrado: jul 2010
Posts: 37
Poder: 0
force1758 Va por buen camino
mostrar/suspender/resumir/matar/thread de otro proceso hecho en delphi

Hola amigo de Clubdelphi Como les va, Bueno Vuelvo Por aqui para ver si me dan ayuda o alguna idea para mi programa que deseo hacer, Es de como puedo obtener Los threads de otro Proceso en ejecucion y mostrarlos en un listbox desde alli poder pausarlo , resumirlo o matarlos el TID de ese thread he buscado por todo san google y no tengo ni idea como empesar .para lo que no tenga idea que es lo que quiero hacer
http://es.tinypic.com/view.php?pic=1...6#.VCLH-Vd9JDh

ese seria un ejemplo que lo hace con processExplorer pero yo quisiera hacerlo bajo este lenguaje (Delphi), Bueno si Mas Nada que decir y esperar que me ayuden en esto que estoy Buscando los dejo:...
Gracias Saludos

Última edición por Casimiro Notevi fecha: 24-09-2014 a las 17:02:55.
Responder Con Cita
  #2  
Antiguo 24-09-2014
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Cual es el objetivo de eso? Que quieres lograr?
__________________
El malabarista.
Responder Con Cita
  #3  
Antiguo 24-09-2014
force1758 force1758 is offline
Miembro
 
Registrado: jul 2010
Posts: 37
Poder: 0
force1758 Va por buen camino
Cita:
Empezado por mamcx Ver Mensaje
Cual es el objetivo de eso? Que quieres lograr?

hola y gracias por responder tan pronto ,Bueno mi objetivo es obtener una herramienta que me permita ver los TID de cualquier proceso de windows e ir comprobando Que funcion Cumple o vulneravilidades que tiene cuando se pausa o se elimina ese trhead ,se que con processexplore , y processhack se puede hacer tambien lo mismo , pero yo quiero compilar el mio propio pero solo esa parte de ver los trheads que estan en ejecucion de ese proceso y asi pausarlo , resumindolo o eliminandolo....

gracias Saludos
Responder Con Cita
  #4  
Antiguo 24-09-2014
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
La forma de hacer una lista de threads de un proceso PID, es esta:

Código:
  HANDLE hThreadSnap = INVALID_HANDLE_VALUE;
  THREADENTRY32 te32 = {sizeof(te32)};

  hThreadSnap = CreateToolhelp32Snapshot( TH32CS_SNAPTHREAD, 0 );
  if(hThreadSnap != INVALID_HANDLE_VALUE && Thread32First( hThreadSnap, &te32)){
    do{
      if(te32.th32OwnerProcessID == PID)  // Si el hilo corresponde con el ID del proceso que me interesa...
      {
         te32.th32ThreadID; // aquí están los ThreadID encontrados
      }
    }while(Thread32Next(hThreadSnap, &te32 ) );
  }
  CloseHandle( hThreadSnap );
Lo siguiente será abrir el hilo OpenThread con el ID encontrado y realizar lo que pretendes con él.


Saludos.
Responder Con Cita
  #5  
Antiguo 24-09-2014
force1758 force1758 is offline
Miembro
 
Registrado: jul 2010
Posts: 37
Poder: 0
force1758 Va por buen camino
gracias mi amigo escafandra por darme una idea de como comenzar bueno e solucionado de ver los TID en una lista ahora seria como aria para ver (start Adress) , (como se Ve en la imagen de arriba) para ver los modulos de esas TID y asi tambien como aria para pausarlo , reanudarlo y terminarlo Bueno colocare el codigo que utilize y asi se expanda mas este hilo hasta finiquitar este proyecto que a muchos de seguro le servira:
Código Delphi [-]
procedure GetThreadList;
var
    hThreadSnap, hThread: THandle;
    te32: tagTHREADENTRY32;
    dwPID: DWORD;
    hProcess: THandle;
    szFileName: array[0..MAX_PATH] of Char;
    dwLen: DWORD;
    PID: Integer;
begin
    form1.ListBox1 .Clear;
    hThreadSnap := CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0);
    if hThreadSnap = INVALID_HANDLE_VALUE then Exit;
    try
    PID:= 0;
           if  GetProcessID( form1.Edit1.Text ,PID, 1) then
        dwPID := (PID);
           te32.dwSize := SizeOf(THREADENTRY32);
                 if not Thread32First(hThreadSnap, te32) then Exit;
           repeat
                   if te32.th32OwnerProcessID = dwPID then
                   begin
                           hThread := OpenThread(THREAD_ALL_ACCESS, False, te32.th32ThreadID);
                           form1.ListBox1.Items.AddObject(IntToStr(te32.th32ThreadID),TObject(hThread));
                   end;
                   hProcess := OpenProcess(PROCESS_QUERY_INFORMATION, False,te32.th32OwnerProcessID);
                  if hProcess <> 0 then
                   begin
                        dwLen := GetModuleFileName(hProcess, szFileName, MAX_PATH);

                        CloseHandle(hProcess);
                   // use szFileName up to dwLen characters as needed...
                   end;
           until not Thread32Next(hThreadSnap, te32);
    finally
           CloseHandle(hThreadSnap);
    end;
end;
Gracias Saludos

Última edición por Casimiro Notevi fecha: 25-09-2014 a las 00:27:21. Razón: mejora
Responder Con Cita
  #6  
Antiguo 25-09-2014
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
ResumeThread
SuspendThread
TerminateThread


Saludos.
Responder Con Cita
  #7  
Antiguo 25-09-2014
force1758 force1758 is offline
Miembro
 
Registrado: jul 2010
Posts: 37
Poder: 0
force1758 Va por buen camino
Cita:
Empezado por escafandra Ver Mensaje
Gracias pero mi duda seria como aria el codigo ya que no se encuentra informacion sobre resumethread , suspendThread,Terminatethread he estado leyendo mucho y no consigo lo que mas quiero que son resumen ,suspendthread... Espero que alguien mas aporte sus conocimiento en el tema::.

Gracias Saludos
Responder Con Cita
  #8  
Antiguo 25-09-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Pero si son enlaces con la descripción y ejemplos
Responder Con Cita
  #9  
Antiguo 25-09-2014
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Casimiro te respondió.

Por favor, pon la "h" al verbo hacer.

Saludos.
Responder Con Cita
  #10  
Antiguo 25-09-2014
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.282
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Como alternativa (y para llevar la contraria ) para acceder a los threads de un proceso puedes utilizar WMI.

WMI posee la clase WIN32_Thread que justamente te devuelve eso.

Puedes utilizar consultas como estas para obtener los threads a partir de un ProcessID:
select * from WIN32_Thread where processHandle=2856
select Handle, Priority, ProcessHandle,ThreadState from WIN32_Thread where processHandle=2856


Utilizando uno de los ejemplos que hay sobre WMI en el FTP del club y modificando poca cosa puedes obtener los threads y todo la información sobre ellos.

Imagen:


He subido el código del proyecto al FTP.

Un saludo.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #11  
Antiguo 25-09-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por Neftali Ver Mensaje
Puedes utilizar consultas como estas para obtener los threads a partir de un ProcessID:
select * from WIN32_Thread where processHandle=2856
select Handle, Priority, ProcessHandle,ThreadState from WIN32_Thread where processHandle=2856
¿Es una consulta a una base de datos de qué tipo y cuál es?
Responder Con Cita
  #12  
Antiguo 25-09-2014
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.282
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por Casimiro Notevi Ver Mensaje
¿Es una consulta a una base de datos de qué tipo y cuál es?
Es una "consulta" a WMI (Windows management Instrumentation)
Le llamamos consultas, porque Microsoft ha montado las llamadas con la estructura de SQL; En realidad con WQL (SQL for WMI). De esta forma las llamadas a WMI se pueden hacer de forma similar a las llamadas SQL a una base de Datos.

¿A eso te referías?
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #13  
Antiguo 25-09-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Sí, gracias, es que me ha resultado curioso
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Matar el proceso de mi aplicacion IVAND Varios 2 25-04-2011 21:26:38
Matar proceso CB6 meme API de Windows 0 13-12-2007 12:39:52
Matar proceso raugadel API de Windows 9 05-10-2006 19:23:49
Evitar matar mi proceso acertij022 API de Windows 4 11-11-2005 16:20:21
Matar Proceso anitra_cattivo API de Windows 2 10-09-2003 19:10:55


La franja horaria es GMT +2. Ahora son las 15:23:07.


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
Copyright 1996-2007 Club Delphi