Форум программистов, компьютерный форум, киберфорум
Наши страницы

C++ и WinAPI

Войти
Регистрация
Восстановить пароль
 
Игорь с++
441 / 464 / 16
Регистрация: 26.01.2011
Сообщений: 2,033
#1

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

12.06.2012, 13:56. Просмотров 878. Ответов 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
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Получение списка процессов (Win7) (C++ WinAPI):

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

Получение списка процессов Windows - C++ WinAPI
привет всем! надо написать программу которая управляет процессорами windows для каждого процесса выводит имя,директорию,занимаемая...

Получение текущих процессов windows - C++ WinAPI
Здравствуйте, как можно получить текущие процессы windows и занимаемые ими объемы памяти? Погуглил, но некоторые способы кривые: не...

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

Получение текста из списка - C++ WinAPI
Помогите решить следующию проблему. Хочу получить текст из списка. Окно списка я получил (закрыть, зделать невидимым и т.п. могу),...

Получение списка файлов в каталоге - C++
Добрый день. подскажите пожалуйста, как в С++ получить список файлов в каталоге. Делаю так: #include &quot;stdafx.h&quot; #include...

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

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

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

Вызов, получение списка функций процесса из injection dll - C++ WinAPI
Есть ли способ получить каким либо образом список функций, или для этого надо дизассемблировать dll, и найти все адреса? Есть ли какой то...

Создание задания, добавление процессов, удаление процессов - C++ WinAPI
Здравствуйте. Уже который день бьюсь со своей лабораторной работой - не получается, и все. Идея следующая. При запуске, программа должна...


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

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

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