Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

enumerating EXEs

748
01 октября 2005 года
AlphaOmega
159 / / 28.09.2004
Вообщем такая задача:
Минимальным кодом составить список запущенных приложений. Именно список EXE файлов, запущенных сейчас. Другая инфа не нужна - только имя EXE файла. Чтобы работало это и на NT и на 9х. Кто-нибудь знает?
748
03 октября 2005 года
AlphaOmega
159 / / 28.09.2004
Цитата:
Originally posted by AlphaOmega
Вообщем такая задача:
Минимальным кодом составить список запущенных приложений. Именно список EXE файлов, запущенных сейчас. Другая инфа не нужна - только имя EXE файла. Чтобы работало это и на NT и на 9х. Кто-нибудь знает?



Ну раз никто не отвечает придётся найти самому.
Вот - что я нашёл (кстати именно то, что я искал)

Код:
#include <tlhelp32.h>
#include <dstring.h>

Memo1->Clear();

HANDLE process;
PROCESSENTRY32 Entry;
char *processEXE;
process = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);

while (Process32Next(process,&Entry))
 {
 Entry.dwSize = sizeof(Entry);
 processEXE = Entry.szExeFile;
 Memo1->Lines->Add((AnsiString)processEXE);
 }

CloseHandle(process);


Выводит в Memo1 список всех запущенных EXE файлов
246
04 октября 2005 года
GIZMO
1.8K / / 30.07.2004
Цитата:
Originally posted by AlphaOmega
Вообщем такая задача:
Минимальным кодом составить список запущенных приложений. Именно список EXE файлов, запущенных сейчас. Другая инфа не нужна - только имя EXE файла. Чтобы работало это и на NT и на 9х. Кто-нибудь знает?


http://forum.codenet.ru/showthread.php?s=&threadid=25868

748
04 октября 2005 года
AlphaOmega
159 / / 28.09.2004
Цитата:



GIZMO, я ж сказал, что я нашёл нужный код. Его же и выложил выше. Тему можно закрывать.

246
04 октября 2005 года
GIZMO
1.8K / / 30.07.2004
Цитата:
Originally posted by AlphaOmega
GIZMO, я ж сказал, что я нашёл нужный код. Его же и выложил выше. Тему можно закрывать.


Ну, пацан - сказал, пацан - сделал:)

748
14 октября 2005 года
AlphaOmega
159 / / 28.09.2004
Возникла проблема.

Вообщем код этот когда вызывается вручную - работает. Но вот иногда через некоторое время если запустить этот процесс таймером - список остаётся пустым. Что не так?
1
15 октября 2005 года
kot_
7.3K / / 20.01.2000
Цитата:
Originally posted by AlphaOmega
Возникла проблема.

Вообщем код этот когда вызывается вручную - работает. Но вот иногда через некоторое время если запустить этот процесс таймером - список остаётся пустым. Что не так?


Приведи пример как ты запускаешь - у меня все работает и список заполняется.

748
15 октября 2005 года
AlphaOmega
159 / / 28.09.2004
Цитата:
Originally posted by kot_
Приведи пример как ты запускаешь - у меня все работает и список заполняется.



Корчое чтобы глюков не было, нужно объявлять не как PROCESSENTRY32 Entry; а вот так: ROCESSENTRY32* Entry = new PROCESSENTRY32;
Тогда глюков не происходит.

Так что можно считать что снова проблема решена.

А вообще, отвечая на твой вопрос, запускалось так же как в примере выше. Таймер при достижении времени обнуляет список и запускает этот код...

1
15 октября 2005 года
kot_
7.3K / / 20.01.2000
Цитата:
Originally posted by AlphaOmega
Корчое чтобы глюков не было, нужно объявлять не как PROCESSENTRY32 Entry; а вот так: ROCESSENTRY32* Entry = new PROCESSENTRY32;
Тогда глюков не происходит.

Так что можно считать что снова проблема решена.

А вообще, отвечая на твой вопрос, запускалось так же как в примере выше. Таймер при достижении времени обнуляет список и запускает этот код...


Можно и так. Судя по всему глюк был в том, что в коде приведенным тобой отсутствовала строка -

 
Код:
Entry.dwSize = sizeof(PROCESSENTRY32);

Даже при использовании PROCESSENTRY32* не стоит пренебрегать явной инициализацией данной переменной.
748
15 октября 2005 года
AlphaOmega
159 / / 28.09.2004
Цитата:
Originally posted by kot_
Можно и так. Судя по всему глюк был в том, что в коде приведенным тобой отсутствовала строка -
 
Код:
Entry.dwSize = sizeof(PROCESSENTRY32);


Возможно.
В новом коде уже есть эта строка (только вместо точки там стрелка). Этот код вроде как уже не глючит.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог