Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-12-2006
Reinery Reinery is offline
Registrado
 
Registrado: dic 2006
Posts: 7
Poder: 0
Reinery Va por buen camino
Smile Lista de procesos de mi ordenador

uuf pued llevo dia y he buscado pero cuando he estado cerca pues retorno al inicio, mi problema es que kisiera hacer una lista de procesos en mi programa.

bueno gracias por adelantado
Responder Con Cita
  #2  
Antiguo 12-12-2006
Avatar de Bicho
[Bicho] Bicho is offline
Miembro Premium
 
Registrado: jul 2003
Ubicación: Inca - Mallorca
Posts: 1.776
Poder: 22
Bicho Va por buen camino
Hola, no habras buscado mucho por aquí, ¿no?
Mira al final de esta pagina tienes este hilo por ejemplo, y si usas el buscador encontrarás más seguro

Espero te sirva.

Saludos
Responder Con Cita
  #3  
Antiguo 12-12-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
Aquí también tratamos del tema, pero en C. Puede que te sea de utilidad.

http://www.clubdelphi.com/foros/showthread.php?t=37988
Responder Con Cita
  #4  
Antiguo 13-12-2006
Reinery Reinery is offline
Registrado
 
Registrado: dic 2006
Posts: 7
Poder: 0
Reinery Va por buen camino
Wink ok, pero necesito ayuda en esto ahora

tengo este codigo, que le traduje desde delphi a builder, pero ahora me da un error al compilar con esta lines si pudieran ayudarme una ves mas
gracias..

void GetMemoryProcess()
{
HANDLE foto;
tagPROCESSENTRY32 datos;
int r=1;

datos.dwSize = sizeof(tagPROCESSENTRY32);
foto = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);

while (Process32Next(foto, &datos)!=0)
{
//en esta linea del listview me da un error
Form1->ListView1->Items->Add(IntToStr(datos.th32ProcessID));
Form1->ListView1->Items->Item[r]->SubItems->Add(datos.szExeFile);
r++;
}

CloseHandle(foto);
}
Responder Con Cita
  #5  
Antiguo 13-12-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
Lo que seria estupendo es que nos dijeras que error te da al compilar
Responder Con Cita
  #6  
Antiguo 13-12-2006
Reinery Reinery is offline
Registrado
 
Registrado: dic 2006
Posts: 7
Poder: 0
Reinery Va por buen camino
bueno estu mirando y cambien lo que tenia.
ya no me da el error
pero no me sale los nombre de los procesos

while (Process32Next(foto, &datos)!=0)
{

Form1->ListView1->AddItem(IntToStr(datos.th32ProcessID),NULL);
Form1->ListView1->Items->Item[r]->SubItems->Add(".EXE");

r++;
}
Responder Con Cita
  #7  
Antiguo 14-12-2006
wako13 wako13 is offline
Registrado
 
Registrado: sep 2006
Posts: 5
Poder: 0
wako13 Va por buen camino
Hola:

Si solo necesitas listar los procesos sin la ruta puedes hacerlo con el siguiente código, la ventaja es que funciona en todas las versiones de Windows con cualquier versión de C++Builder. Para probarlo solo necesitas añadir un TListBox (ListBox1) y lo siguiente en el constructor del form:

Código:
// Añadimos:  #include<Tlhelp32.h> 
 
PROCESSENTRY32 proc = { sizeof(proc) }; 
HANDLE hSysSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); 
if ( hSysSnapshot != reinterpret_cast<HANDLE>(-1) 
    && Process32First(hSysSnapshot, &proc) ) 
{ 
   ListBox1->Clear(); 
   do 
   { 
      char str[512]; 
      wsprintf(str, "%s  (id=%lu)", proc.szExeFile, proc.th32ProcessID); 
      ListBox1->Items->Add(str); 
   } while ( Process32Next(hSysSnapshot, &proc) ); 
} 
CloseHandle (hSysSnapshot);
Y ya si necesitas la ruta y poder obtener mas información sobre cada proceso puedes usar lo siguiente, aunque solo funciona en NT/2000/XP. En el ejemplo solo se obtiene la ruta como dato extra a la de arriba, pero puedes obtener mucha mas información, para ello mira el apartado PSAPI del API.

Código:
//--- Cargamos dinamicamente la libreria "psapi.dll" 
//  (En versiones mas actualizadas (BCB6) no necesitamos hacer esto. 
//   Solo añadir #include<psapi.h> y la libreria "psapi.lib") 
typedef BOOL  (__stdcall *PFEnumProcesses)(DWORD*,DWORD,DWORD*); 
typedef BOOL  (__stdcall *PFEnumProcessModules)(HANDLE,HMODULE*,DWORD,LPDWORD); 
typedef DWORD (__stdcall *PFGetModuleFileNameEx)(HANDLE,HMODULE,LPTSTR,DWORD); 
 
PFEnumProcesses        fEnumProcesses; 
PFEnumProcessModules fEnumProcessModules; 
PFGetModuleFileNameEx  fGetModuleFileNameEx; 
 
HINSTANCE hLib = LoadLibrary("psapi.dll"); 
if (hLib) 
{ 
    fEnumProcesses = reinterpret_cast<PFEnumProcesses>( 
            GetProcAddress(hLib, "EnumProcesses") ); 
    fEnumProcessModules = reinterpret_cast<PFEnumProcessModules>( 
            GetProcAddress(hLib, "EnumProcessModules") ); 
    fGetModuleFileNameEx = reinterpret_cast<PFGetModuleFileNameEx>( 
            GetProcAddress(hLib, "GetModuleFileNameExA") ); 
 
    if (fEnumProcesses && fEnumProcessModules && fGetModuleFileNameEx) 
    { 
        //--- Obtenemos la lista de indentificadores de proceso 
        DWORD aProcesses[1024], cbNeeded, cProcesses, i; 
        if (!fEnumProcesses(aProcesses, sizeof(aProcesses), &cbNeeded)) 
            return; 
 
        //--- Calculamos cuantos indentificadores fueron devueltos 
        cProcesses = cbNeeded / sizeof(DWORD); 
 
        //--- Mostramos información de cada proceso 
        ListBox1->Clear(); 
        for (i=0; i<cProcesses; i++) 
        { 
            char    szProcessName[MAX_PATH] = "desconocido"; 
            DWORD   processID = aProcesses[i]; 
            HANDLE  hProcess = OpenProcess(PROCESS_QUERY_INFORMATION 
                        | PROCESS_VM_READ, FALSE, processID); 
            HMODULE hMod; 
 
            if (hProcess) 
            { 
                if (fEnumProcessModules(hProcess, &hMod, 
                        sizeof(hMod), &cbNeeded)) 
                { 
                    fGetModuleFileNameEx(hProcess, hMod, 
                            szProcessName, sizeof(szProcessName)); 
 
                    String str(""); 
                    str.sprintf("%s (Process ID: %u)", 
                            szProcessName, processID); 
                    ListBox1->Items->Add(str); 
                } 
                CloseHandle(hProcess); 
            } // if hProcess 
        } // for i 
    } // if 
 
    FreeLibrary(hLib); 
} // if hLib
Codigo by _Leo

Saludos Cordiales

Responder Con Cita
  #8  
Antiguo 16-12-2006
Reinery Reinery is offline
Registrado
 
Registrado: dic 2006
Posts: 7
Poder: 0
Reinery Va por buen camino
Cool gracias a todos por la ayuda

bueno aki dejo lo que finalmente obtuve ademas busque otros hilos en este sitio que me sirvieron para mi final.
hay que poner un listview y adicionarle dos columnas ademas en viewstyle ponele vsreport bueno ojala le sirva a alguien

void GetMemoryProcess()//Para listar los procesos
{
HANDLE foto;
tagPROCESSENTRY32 datos;
int Indice=0;

datos.dwSize = sizeof(tagPROCESSENTRY32);
foto = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);

while (Process32Next(foto, &datos)!=0)
{
Form1->ListView1->Items->Add()->Caption=IntToStr(datos.th32ProcessID);
Form1->ListView1->Items->Item[Indice]->SubItems->Add(datos.szExeFile);
Indice++;
}

CloseHandle(foto);
}
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
Acceder a la lista de procesos IZO API de Windows 9 25-04-2007 20:31:44
¿Cómo ocultar programa de lista de procesos de xp? israelgs C++ Builder 13 27-04-2006 14:14:37
¿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 02:38:00.


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