advance() конечно, хорошо, но... Вот несколько другой пример:
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
| #include <stdio.h>
#include <Windows.h>
#include <tlhelp32.h>
#include <vector>
#include <string>
using namespace std;
//структура "узел"
struct uzel {
public:
//В качестве эесперимента (или пока тестируем) можно ввести и такой конструктор.
//Опять же процесс ima_processa должен быть, иначе неопределённое поведение
uzel (string ima_processa, HANDLE hProcessSnap) {
printf ("hProcessSna= %x\n", hProcessSnap);
//Заполняем v_PROCESSENTRY32
PROCESSENTRY32 pe32_;
Process32First(hProcessSnap, &pe32_);
v_PROCESSENTRY32.push_back(pe32_);
advance (it, v_PROCESSENTRY32.size()- 1);
printf ("это видим\n");
Process32Next(hProcessSnap, &pe32_);
v_PROCESSENTRY32.push_back(pe32_);
advance (it, v_PROCESSENTRY32.size()- 1);
printf ("это видим\n");
printf ("(*it).th32ProcessID= %d\n", (*it).th32ProcessID);
printf ("а это ни хрена не видим\n");
}
//Инфа о процессе
vector<PROCESSENTRY32>::iterator it;
//Это вот будет такая херь как вектор элементов типа PROCESSENTRY32
vector<PROCESSENTRY32> v_PROCESSENTRY32;
};
//+
//+
int main () {
SetConsoleCP (1251);
SetConsoleOutputCP (1251);
HANDLE hProcessSna= CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
printf ("hProcessSna= %x\n", hProcessSna);
uzel uz ("explorer.exe", hProcessSna);
getchar ();
return 0;
} |
|
Программу тупо выбивает. В чём дело?