FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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 |
#3
|
||||
|
||||
Aquí también tratamos del tema, pero en C. Puede que te sea de utilidad.
http://www.clubdelphi.com/foros/showthread.php?t=37988 |
#4
|
|||
|
|||
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); } |
#5
|
||||
|
||||
Lo que seria estupendo es que nos dijeras que error te da al compilar
|
#6
|
|||
|
|||
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++; } |
#7
|
|||
|
|||
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); 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 Saludos Cordiales |
#8
|
|||
|
|||
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); } |
|
|
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 |
|