7 / 7 / 1
Регистрация: 14.08.2012
Сообщений: 32
1

Прочитать список всех запущенных Exe и проверить, запущен ли Exe

17.08.2012, 02:16. Показов 3467. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет .
Помогите с кодом как Прочитать список всех запущенных Exe и проверить, запущен ли Exe
Буду Благодарен так как на Delphi такой код нашел а на C++ builder не как че та
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.08.2012, 02:16
Ответы с готовыми решениями:

Не запускаются AVZ. exe, CCleaner. exe, AutoLogger. exe, regedit. exe. Словил вирус bizigames
Доброго времени суток. Захотел я почистить комп от мусора всякого при помощи CCleaner, как не...

Не запускаются AVZ. exe, CCleaner. exe, AutoLogger. exe, regedit. exe Дублируются процессы
Добрый день) не запускались экзешники перечисленные в топе, исправила кое как процессы...

вирус calc.exe*32 notepad.exe*32 cmd.exe cannhost.exe
Здравствуйте. помогите решить проблему. При включении компьютера висят процессы calc.exe*32 ...

Вирусы dwm.exe dllhost.exe ctfmon.exe svchost.exe
Проблема заключается в том что у меня на компьютере в диспетчере задач стоят задачи которые я не...

13
Почемучка)
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
17.08.2012, 02:20 2
Код
CMD->TASKLIST
выводите в например в memo
0
1123 / 794 / 101
Регистрация: 01.02.2011
Сообщений: 1,878
Записей в блоге: 1
17.08.2012, 11:39 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
#include <tlhelp32.h>
...
DWORD GetProcessByExeName(char *ExeName)
{
    PROCESSENTRY32 pe32;
    pe32.dwSize = sizeof(PROCESSENTRY32);
 
    HANDLE hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPALL, NULL);
    if( hProcessSnap == INVALID_HANDLE_VALUE)
    {
        MessageBox(NULL, "Error CreateToolhelp32Snapshot", MB_OK|MB_ICONERROR);
        return false;
    }
 
    if ( Process32First(hProcessSnap, &pe32) )
    {
            do
            {
                    if ( strcmpi(pe32.szExeFile, ExeName) == 0)
                    {
                                CloseHandle(hProcessSnap);
                                return pe32.th32ProcessID;
                     }
             } while ( Process32Next(hProcessSnap, &pe32) );
     }
 
     CloseHandle(hProcessSnap);
     return 0;
}
3
7 / 7 / 1
Регистрация: 14.08.2012
Сообщений: 32
17.08.2012, 13:19  [ТС] 4
Спасибо за помощь. Признательно благодарен.
0
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
17.08.2012, 22:03 5
Ф-ция возвращает ID процесса, а как HANDLE ? например что бы завершить его...
Что то не могу найти...
0
Почемучка)
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
17.08.2012, 23:09 6
Avazart, посмотри пример с С++ builder 6 может чем поможет...
Вложения
Тип файла: rar ProcView.rar (8.1 Кб, 119 просмотров)
2
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
17.08.2012, 23:18 7
Взял от туда

C++
1
2
HANDLE ps = OpenProcess(1,false,GetProcessByExeName(procname) );
TerminateProcess(ps,-9);
1
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
20.08.2012, 03:49 8
TerminateProcess()- убиваем процесс
1
Я Фоюмчанин ? дааааа)
213 / 204 / 23
Регистрация: 02.06.2012
Сообщений: 1,424
Записей в блоге: 12
23.08.2012, 22:48 9
Цитата Сообщение от kzru_hunter Посмотреть сообщение
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
#include <tlhelp32.h>
...
DWORD GetProcessByExeName(char *ExeName)
{
 PROCESSENTRY32 pe32;
 pe32.dwSize = sizeof(PROCESSENTRY32);
HANDLE hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPALL, NULL);
 if( hProcessSnap == INVALID_HANDLE_VALUE)
 {
 MessageBox(NULL, "Error CreateToolhelp32Snapshot", MB_OK|MB_ICONERROR);
 return false;
 }
if ( Process32First(hProcessSnap, &pe32) )
 {
 do
 {
 if ( strcmpi(pe32.szExeFile, ExeName) == 0)
 {
 CloseHandle(hProcessSnap);
 return pe32.th32ProcessID;
 }
 } while ( Process32Next(hProcessSnap, &pe32) );
 }
CloseHandle(hProcessSnap);
 return 0;
}
А как мне сделать, что бы каждый найденный процесс дописывало в мемо?
0
7 / 7 / 1
Регистрация: 14.08.2012
Сообщений: 32
25.09.2012, 20:35  [ТС] 10
Люди помогите почему C++ Builder Xe ругается на этот код
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
DWORD GetProcessByExeName(char *ExeName)    //Функция для процессора
{
    PROCESSENTRY32 pe32;
    pe32.dwSize = sizeof(PROCESSENTRY32);
 
    HANDLE hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPALL, NULL);
    if( hProcessSnap == INVALID_HANDLE_VALUE)
    {
 
        return false;
    }
 
    if ( Process32First(hProcessSnap, &pe32) )
    {
            do
            {
                    if ( strcmpi(pe32.szExeFile, ExeName) == 0) //<------ Вот на это ругается
                    {
                                CloseHandle(hProcessSnap);
                                return pe32.th32ProcessID;
                     }
             } while ( Process32Next(hProcessSnap, &pe32) );
     }
 
     CloseHandle(hProcessSnap);
     return 0;
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
HANDLE ps = OpenProcess(1,false,GetProcessByExeName("Calc.exe") );  //Если запущен Калькулятор то выходим
if(ps) Close();
}

Ошибку пишет такую [BCC32 Error] Unit1.cpp(36): E2034 Cannot convert 'wchar_t *' to 'const char *'
Full parser context
Unit1.cpp(21): parsing: unsigned long GetProcessByExeName(char *)

Помогите решить проблему так как на C++ Builder 6,0 Все отлично работает.
0
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
25.09.2012, 20:36 11
GetProcessByExeNameA( )
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32830 / 21168 / 8147
Регистрация: 22.10.2011
Сообщений: 36,428
Записей в блоге: 8
25.09.2012, 20:55 12
Avazart, это самописная функция, а не библиотечная. Надо менять strcmpi на _wcsicmp, и описывать параметр ExeName типа wchar_t*, а не char*:

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
DWORD GetProcessByExeName(wchar_t *ExeName)
{
    PROCESSENTRY32 pe32;
    pe32.dwSize = sizeof(PROCESSENTRY32);
 
    HANDLE hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPALL, NULL);
    if( hProcessSnap == INVALID_HANDLE_VALUE)
    {
        return false;
    }
 
    if ( Process32First(hProcessSnap, &pe32) )
    {
        do
        {
            if (_wcsicmp(pe32.szExeFile, ExeName) == 0)
            {
                CloseHandle(hProcessSnap);
                return pe32.th32ProcessID;
            }
        } while ( Process32Next(hProcessSnap, &pe32) );
    }
     CloseHandle(hProcessSnap);
     return 0;
}
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    HANDLE ps = OpenProcess(1,false,GetProcessByExeName(L"Calc.exe") );  // Если запущен Калькулятор 
    if(ps) Close();
}
2
1123 / 794 / 101
Регистрация: 01.02.2011
Сообщений: 1,878
Записей в блоге: 1
25.09.2012, 22:11 13
Функция может некорректно работать, если проверить процесс, содержащий русские симолы.
Потому как:
C++
1
2
3
4
5
6
        wchar_t *h = L"р";
        wchar_t *g = L"Р";
        ShowMessage(wcscmpi(g,h)); // returns -32
        char *h = "р";
        char *g = "Р";
        ShowMessage(strcmpi(g,h)); // returns -32
Я бы посоветовал в этом случае преобразовать символы строк в строчные
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32830 / 21168 / 8147
Регистрация: 22.10.2011
Сообщений: 36,428
Записей в блоге: 8
25.09.2012, 22:50 14
C++
1
2
3
4
setlocale(LC_ALL,"");
wchar_t *h = L"р";
wchar_t *g = L"Р";
ShowMessage(_wcsicmp(g,h)); // returns 0
0
25.09.2012, 22:50
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.09.2012, 22:50
Помогаю со студенческими работами здесь

Не запускаются AVZ. exe, CCleaner. exe, AutoLogger. exe, regedit. exe
Доброе время суток. У меня такая проблема: Не запускаются AVZ. exe, CCleaner. exe, AutoLogger....

tyol.exe, zcfh.exe, gphboo.exe, djjqs.exe
Выкладываю логи. Все перечисленные в названии файлы обитают в Admin=&gt;Application Data. Ясно, что...

Как по exe файлу, получить список dll либ, которые qt exe программа требует для запуска?
Как по exe файлу, получить список dll либ, которые qt exe программа требует для запуска?

Множество запущенных процессов svchost.exe
Возникла проблема!!! помогите кто сможет... у меня vista. она выдаёт 14 процессов sv_host. я не...

Svchost.exe, onion.exe, openvg.exe torrc и куча dll и cl, а также папка tor в Roaming

Висят процессы mspaint.exe, notepad.exe, calc.exe
Добрый день! При включение компьютера сразу висят процессы mspaint.exe, notepad.exe, calc.exe. Так...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru