Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++: WinAPI
Войти
Регистрация
Восстановить пароль
 
Игорь с++
473 / 465 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
#1

Получение списка процессов (Win7)

12.06.2012, 13:56. Просмотров 885. Ответов 0
Метки нет (Все метки)

Господа сделал код , который делает скрин процессов , но вот какая странность - когда нажимаю скомпилировать и выполнить , программа показывает колличество процессов и сами процессы , а когда запускаю руками exe-шник показывает 0 процессов всё это в Windows 7 ultimate с правами админа , а в ХР то же с правами админа всё показывает , в чём такая ерунда может быть ? вот код -
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
#define _WIN32_WINNT 0x0501
#include <iostream>
#include <windows.h>
#include <tlhelp32.h>
#include <cstdio>
 
 
/*  Declare Windows procedure  */
LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);
 
/*  Make the class name into a global variable  */
char szClassName[ ] = "WindowsApp";
int sc=0;
char sc2[]={0};
int WINAPI WinMain (HINSTANCE hThisInstance,
                    HINSTANCE hPrevInstance,
                    LPSTR lpszArgument,
                    int nFunsterStil)
 
{
    HWND hwnd;               /* This is the handle for our window */
    MSG messages;            /* Here messages to the application are saved */
    WNDCLASSEX wincl;        /* Data structure for the windowclass */
 
    /* The Window structure */
    wincl.hInstance = hThisInstance;
    wincl.lpszClassName = szClassName;
    wincl.lpfnWndProc = WindowProcedure;      /* This function is called by windows */
    wincl.style = CS_DBLCLKS;                 /* Catch double-clicks */
    wincl.cbSize = sizeof (WNDCLASSEX);
 
    /* Use default icon and mouse-pointer */
    wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
    wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
    wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
    wincl.lpszMenuName = NULL;                 /* No menu */
    wincl.cbClsExtra = 0;                      /* No extra bytes after the window class */
    wincl.cbWndExtra = 0;                      /* structure or the window instance */
    /* Use Windows's default color as the background of the window */
    wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;
 
    /* Register the window class, and if it fails quit the program */
    if (!RegisterClassEx (&wincl))
        return 0;
 
    /* The class is registered, let's create the program*/
    hwnd = CreateWindowEx (
           0,                   /* Extended possibilites for variation */
           szClassName,         /* Classname */
           "Windows App",       /* Title Text */
           WS_OVERLAPPEDWINDOW, /* default window */
           CW_USEDEFAULT,       /* Windows decides the position */
           CW_USEDEFAULT,       /* where the window ends up on the screen */
           544,                 /* The programs width */
           375,                 /* and height in pixels */
           HWND_DESKTOP,        /* The window is a child-window to desktop */
           NULL,                /* No menu */
           hThisInstance,       /* Program Instance handler */
           NULL                 /* No Window Creation data */
           );
 
    /* Make the window visible on the screen */
    ShowWindow (hwnd, nFunsterStil);
 
    /* Run the message loop. It will run until GetMessage() returns 0 */
    while (GetMessage (&messages, NULL, 0, 0))
    {
        /* Translate virtual-key messages into character messages */
        TranslateMessage(&messages);
        /* Send message to WindowProcedure */
        DispatchMessage(&messages);
    }
 
    /* The program return-value is 0 - The value that PostQuitMessage() gave */
    return messages.wParam;
}
 
 
/*  This function is called by the Windows function DispatchMessage()  */
 
LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
PROCESSENTRY32 proc;
    HANDLE hSnap;
static char MY_Proc[MAX_PATH]={0};
static char razd[]=",";
 
 
    switch (message)                  /* handle the messages */
    {
 
case WM_CHAR:
 
    hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0);
    if (hSnap == NULL) {
              MessageBox(hwnd,"îøèáêГ*","",MB_OK);
                                                                                  }
else
    {
        if (Process32First(hSnap, &proc))
        {
            strcat(MY_Proc,proc.szExeFile);
            
            strcat(MY_Proc,razd);
            
            sc++;
            
            while (Process32Next(hSnap, &proc)){ 
        
        sc++;
 
        strcat(MY_Proc,proc.szExeFile);
        strcat(MY_Proc,razd);
        
        }
        }
    }
 
itoa(sc,sc2,10);
 
MessageBox(hwnd,sc2,"Г€Г*ôîðìГ*öèÿ",MB_OK);
 
MessageBox(hwnd,MY_Proc,"Г€Г*ôîðìГ*öèÿ",MB_OK);
 
 
 
     break;
 
        case WM_DESTROY:
            PostQuitMessage (0);       /* send a WM_QUIT to the message queue */
            break;
        default:                      /* for messages that we don't deal with */
            return DefWindowProc (hwnd, message, wParam, lParam);
    }
 
    return 0;
}
Добавлено через 14 часов 4 минуты
Господа изменил немного программу теперь делает так - нажимаем клавишу первый раз показывает один не понятный процесс , нажимаем клавишу второй раз и показывает сразу весь список процессов , я так понимаю почему то первая итерация проходит впустую , но вот вопрос почему ?

Добавлено через 54 секунды
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
case WM_CHAR:
 
    hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0);
 
        Process32First(hSnap, &proc);
            
            strcat(MY_Proc,proc.szExeFile);
            
             strcat(MY_Proc,razd);
            
            sc++;
            
            while (Process32Next(hSnap, &proc)){ 
        
        sc++;
 
        strcat(MY_Proc,proc.szExeFile);
        strcat(MY_Proc,razd);
        
        }
 
itoa(sc,sc2,10);
 
MessageBox(hwnd,sc2,"Г€Г*ôîðìГ*öèÿ",MB_OK);
 
MessageBox(hwnd,MY_Proc,"Г€Г*ôîðìГ*öèÿ",MB_OK);
 
 
 
     break;
Добавлено через 3 часа 18 минут
Вопрос решён , тему можно закрыть .
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.06.2012, 13:56
Ответы с готовыми решениями:

Получение списка путей процессов
Использую vs2010, win7 32. Вообщем,программа выводит список процессов. После...

Получение списка процессов Windows
привет всем! надо написать программу которая управляет процессорами windows ...

Получение текущих процессов windows
Здравствуйте, как можно получить текущие процессы windows и занимаемые ими...

Модуль создания списка процессов и отключение интернета
Приветствую. Надо написать работу, задание по которой выглядит так: ...

Получение текста из списка
Помогите решить следующию проблему. Хочу получить текст из списка. Окно списка...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.06.2012, 13:56

Получение списка файлов в каталоге
Добрый день. подскажите пожалуйста, как в С++ получить список файлов в...

Получение списка файлов в определённой папке
Как получить список всех файлов в определённой папке, включая подпапки, без...

Получение списка пользователей (консольного и rdp-сеансов)
собственно, необходимо получить список активных пользователей у которых...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru