Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-11-2006
IZO IZO is offline
Miembro
 
Registrado: nov 2006
Ubicación: Peru, Lima
Posts: 14
Poder: 0
IZO Va por buen camino
Question Acceder a la lista de procesos

Hola, bueno soy nuevo en el foro y este es mi primer post, queria hacer una consulta he visto ciertos programas compilados en delphi que captan el funcionamiento (proceso) proceso de otro programa, quiera saber como puedo acceder a la lista de procesos que se estan llevando a cabo, y como puedo seguirlo desde mi programa(Form), gracias.
Responder Con Cita
  #2  
Antiguo 16-11-2006
Avatar de aeff
aeff aeff is offline
Miembro
 
Registrado: oct 2006
Ubicación: Cuba, Guantánamo
Posts: 348
Poder: 18
aeff Va camino a la fama
prueba con esto

si a lo que te refieres es a lo que yo entendí, entonces te diré que puedes obtener los nombres de los procesos de la siguiente manera,

colocas primeramente un Listview con dos columnas, ID y Name del proceso:

implementas esta función para obtener los procesos, y sus dos descripciones anterior:

Código Delphi [-]
 
procedure GetMemoryProcess();
var
 foto: Cardinal;
  datos: tagPROCESSENTRY32;
  r: Integer;
begin
 r := 1;
  datos.dwSize := sizeOF(tagPROCESSENTRY32);
  foto := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  while Process32Next(foto, datos) do
   begin
      Form1.ListView1.Items.Add.Caption := IntToStr(datos.th32ProcessID);
   Form1.ListView1.Items[r -1].SubItems.Add('EXE: '  + datos.szExeFile);
     inc(r);
    end;
 CloseHandle(foto);
end;

ahora, para la parte de obtener los subprocesos o los modulos cargados por un proceso, puedes implementar esta otra función:

Código Delphi [-]
  
procedure GetModulesProcess(idProcess, tData: Integer);
var
 foto: Cardinal;
  datos: tagMODULEENTRY32;
  r: Integer;
begin
 foto := CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, idProcess);
 r := 1;
  datos.dwSize := sizeOf(tagMODULEENTRY32);
  while Module32Next(foto, datos) do
   begin
     case tData of
       1: ShowMessage(IntToStr(datos.hModule));
       2: ShowMessage(datos.szModule);
       3: ShowMessage(datos.szExePath);
    end;
      inc(r);
    end;
 CloseHandle(foto);
end;

el primer parámetro de esta última funcion es para obtener los subprocesos del proceso que tenga el ID especificado, por ejemplo el 456, winlogon.exe...

y el segundo parámetro de esta función es para mostrar en un mensajito la descripción del subproceso:
1 => Handle
2 => Nombre
3 => Path + name

espero que te funcione...

Última edición por dec fecha: 16-11-2006 a las 05:47:31.
Responder Con Cita
  #3  
Antiguo 17-11-2006
IZO IZO is offline
Miembro
 
Registrado: nov 2006
Ubicación: Peru, Lima
Posts: 14
Poder: 0
IZO Va por buen camino
Muchas gracias aeff me funciono muy bien, pero queria saber si no ahy forma de seguirlos,(alterarlos) u ocultarlos?.
Responder Con Cita
  #4  
Antiguo 17-11-2006
Avatar de aeff
aeff aeff is offline
Miembro
 
Registrado: oct 2006
Ubicación: Cuba, Guantánamo
Posts: 348
Poder: 18
aeff Va camino a la fama
Wink estoy en la misma situación

yo agradecería enormemente que cuando logres hacer lo que pides en relación a los procesos, que me lo informes, yo también estoy por dar con ese truco...
Responder Con Cita
  #5  
Antiguo 17-11-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Yo cuando alguien pregunta como se puede ocultar un proceso de la lista de procesos me hago siempre la misma pregunta: ¿por que?, y solo se me ocurre una respuesta, y no es nada bueno. Puedo entender que se quiera ocultar de la lista de aplicaciones, pero entenderéis que por motivos de seguridad no se pueda quitar de la de procesos.

Demostrarme que me equivoco y darme una razón legitima para ocultar un proceso.
Responder Con Cita
  #6  
Antiguo 17-11-2006
IZO IZO is offline
Miembro
 
Registrado: nov 2006
Ubicación: Peru, Lima
Posts: 14
Poder: 0
IZO Va por buen camino
Thumbs down Jeje todos quieren los mismo

Parece a mis 14 años me interese por la programacion soy muy new y hay algunas o muchas cosas de lemguaje pascal que no entiendo, pues estoy en el colegio y no tengo casi tiempo de leer los tutoriales que me descargo de internet, que dicho sea de paso entiendo el solo el 3% del tutorial que leo(no soy yo es el tutorial que no se explica bien),aprendi lo q se deberia saber lo basico de lo basico como declarar y crear hilos, etc,pero de hay hay tutos muy avanzados q no entiendo ( incluso no entiendo por que se pone^ y @en algunas cosantantes o variables) y busco un tutorial que compense el vacio (entre lo novato y lo experto), les contare que me interese por delhpi al ver un genial programa que captaba procesos y obtenia adress mediante escaneos y al cambiar los values de las adress alteraba su proceso y estaba compilado en delphi, por eso pedi una ayudita con la lista de procesos y a ocultarlos, para ir haciendome una idea de lo que en el fututo(quiza muy lejano) quiera crear un programa como el que les explique.
Responder Con Cita
  #7  
Antiguo 17-11-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Pues a mi también me gustaría ver como hacia el programa para ocultar procesos. Hasta donde yo se, no hay ninguna forma de ocultar un proceso en WindowsXP, no así en windows95 que es algo trivial. La única forma sería, modificando el comportamiento del propio sistema operativo como lo haría un rootkit, pero delphi no es capaz de generar ese tipo de ejecutables.

De todas formas no te desanimes y empieza por aprender a andar antes de intentar correr
Responder Con Cita
  #8  
Antiguo 25-04-2007
Avatar de yarielrs
yarielrs yarielrs is offline
Miembro
 
Registrado: mar 2007
Ubicación: Cienfuegos, Cuba
Posts: 16
Poder: 0
yarielrs Va por buen camino
Hola aeff tengo una duda en cuanto a la función GetModulesProcess que pusiste, el problema es que cuando le doy el ID del winlogon.exe o de cualquier otro proceso que se ejecuta como un proceso de sistema no me devuelve ningún resultado esto es en windows xp sp2 y mi cuenta es administrativa, entonces lo que quisiera que me dijeras es porque sucede esto porque a la verdad mira que me e ron pido tratando de averiguarlo pero no e podido dar con la respuesta.

Gracias de antemano y disculpa la molestia....
Responder Con Cita
  #9  
Antiguo 25-04-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Yaeris, eso ocurre porque no tienes suficientes privilegios. Pero lo bueno de ser administrador es que tu mismo te los puedes conceder . La siguiente función permite elevar los privilegios de tu aplicación, de esta forma ya podrás usar la función.

Código Delphi [-]
function EnablePrivilege(PrivilegeName: PChar; Enable: Boolean): Boolean;
var
  hToken: THandle;
  Tp: TOKEN_PRIVILEGES;
  Luid: TLargeInteger;
begin
  Result:= FALSE;
  if OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or
    TOKEN_QUERY or TOKEN_READ, hToken) then
    if LookupPrivilegeValue(nil,PrivilegeName,Luid) then
    begin
      Tp.PrivilegeCount:= 1;
      Tp.Privileges[0].Luid:= Luid;
      if Enable then
        Tp.Privileges[0].Attributes:= SE_PRIVILEGE_ENABLED
      else
        Tp.Privileges[0].Attributes:= 0;
      Result:= AdjustTokenPrivileges(hToken,FALSE,Tp,0,nil,PDWORD(nil)^);
      CloseHandle(hToken);
    end;
end;

Por ejemplo:
Código Delphi [-]
EnablePrivilege('SeDebugPrivilege', TRUE);
// Aqui usamos la funcion
GetModulesProcess(524,2);
EnablePrivilege('SeDebugPrivilege', FALSE);
Responder Con Cita
  #10  
Antiguo 25-04-2007
Avatar de yarielrs
yarielrs yarielrs is offline
Miembro
 
Registrado: mar 2007
Ubicación: Cienfuegos, Cuba
Posts: 16
Poder: 0
yarielrs Va por buen camino
Muchas gracias seoane por tu ayuda pues ahora la funcion si que me funciona a las mil maravillas.......
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
¿Cómo ocultar programa de lista de procesos de xp? israelgs C++ Builder 13 27-04-2006 14:14:37
Triggers Y Procesos micayael Firebird e Interbase 6 03-12-2005 16:40:01
¿Mejor heredar de una Lista o mejor introducir la Lista en un campo? Jome OOP 8 24-11-2005 17:11:16
Ocultar una aplicacion de la lista procesos w2000 marceloalegre Varios 0 02-05-2005 16:26:19


La franja horaria es GMT +2. Ahora son las 10:56:48.


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