Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

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.038
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.269
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.038
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.269
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.038
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



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 01:27:23.


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