Форум программистов, компьютерный форум CyberForum.ru

Путь к процессам - C++

Восстановить пароль Регистрация
 
Aleks2215
4 / 4 / 0
Регистрация: 22.01.2011
Сообщений: 41
05.07.2011, 16:05     Путь к процессам #1
Нашел вот такой код
C++
1
2
3
4
5
6
7
8
9
10
11
#include <windows.h>
#include <Psapi.h>
 
int main(){
    
 int pid = 3432; // PID of notepad.exe
 char buffer[MAX_PATH];
 HANDLE proc = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, pid);   
 GetModuleFileNameEx(proc, 0, buffer, MAX_PATH);
MessageBox(0,buffer,"",0);
}
Подставляем PID и по нему он находит процесс. Работает, но путь отображается далеко не ко всем процессам. Подскажите, что нужно сделать чтобы все процессы находил.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.07.2011, 16:05     Путь к процессам
Посмотрите здесь:

C++ Путь
Дальнейший путь C++
C++ путь к файлу
Путь символа C++
C++ Эйлеров путь
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
-=ЮрА=-
Заблокирован
Автор FAQ
05.07.2011, 16:15     Путь к процессам #2
http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx

The GetModuleFileNameEx function is primarily designed for use by debuggers and similar applications that must extract module information from another process. If the module list in the target process is corrupted or is not yet initialized, or if the module list changes during the function call as a result of DLLs being loaded or unloaded, GetModuleFileNameEx may fail or return incorrect information.
xAtom
 Аватар для xAtom
910 / 735 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
05.07.2011, 19:41     Путь к процессам #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <Windows.h>
#include <deque>
#include <tlhelp32.h>
using namespace  std;
 
 
 
// получение процессов
void     get_process(deque<PROCESSENTRY32>*  lst) {
 
    HANDLE   shot  = CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0);
    PROCESSENTRY32  pro;
    ZeroMemory(&pro, sizeof(PROCESSENTRY32));
    pro.dwSize    = sizeof(PROCESSENTRY32);
    if(! Process32First(shot, &pro))
          return;
    do { 
               lst->push_back(pro);
               ZeroMemory(&pro, sizeof(PROCESSENTRY32));
               pro.dwSize = sizeof(PROCESSENTRY32);
 
    } while(Process32Next(shot, &pro)) ;
    CloseHandle(shot);
}
 
 
 
void  main(void)
{
 
           deque<PROCESSENTRY32>   deq;
           get_process(&deq);
           for(size_t i = 0u; i < deq.size(); i++)  // выводим список процессов и ID-ы
                 printf("process:  %s\tID = %d\n",  deq[i].szExeFile, deq[i].th32ProcessID);
 
           // далее хоть что можно делать с другими процессами
 
    deq.clear();
 
    getchar();
}
Aleks2215
4 / 4 / 0
Регистрация: 22.01.2011
Сообщений: 41
06.07.2011, 11:35  [ТС]     Путь к процессам #4
xAtom, вы не совсем поняли суть вопроса) мне нужен не список процессов(он у меня есть), а путь к конкретному процессу, который находился путем выполнения кода чуть выше. Что то типа:
C:\Windows\System32\explorer.exe
Но проблема моего кода в том что он не ко всем процессам находил путь, и я интересуюсь почему)
Yandex
Объявления
06.07.2011, 11:35     Путь к процессам
Ответ Создать тему
Опции темы

Текущее время: 08:28. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru