|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
04.10.2007, 19:22 | #1 |
Регистрация: 27.06.2007
Сообщений: 6
|
Как получить список запускаемых программ?
Помогите разобраться с вопросом: как получить список запускаемых программ в винде за время работы данной программы(которая это все и проворачивает)??? пож-та
|
04.10.2007, 19:58 | #2 |
добрый няша
Старожил
Регистрация: 29.10.2006
Сообщений: 4,804
|
один из простых способов:
создай отдельно поток, в котором получай каждую секунду список процессов. При первом перечислении начале создай список потом только добавляй в него новые имена процессов. P.S. в книге "Delphi глазами хакера", есть пример мониторинга приложений у которых есть окна. |
04.10.2007, 22:52 | #3 |
Регистрация: 27.06.2007
Сообщений: 6
|
ну, а точнее...
как создать этот поток, т.е.где у нас есть этот список.откуда его вынуть?
|
05.10.2007, 20:13 | #4 |
добрый няша
Старожил
Регистрация: 29.10.2006
Сообщений: 4,804
|
Создать поток - функция CreateThread
Код:
(например здесь, второй пост) при получении первого списка процессов ты сохраняешь этот список в в отдельный (общий) список, при последующем получении списка процессов, смотришь какого процесса нет в общем списке и если есть таковые добавляешь туда этот процесс |
30.10.2007, 17:54 | #5 | |
Пользователь
Регистрация: 26.10.2007
Сообщений: 79
|
Цитата:
1. Через драйвер режима ядра и регистрации своего коллбэка с помощью PsSetCreateProcessNotifyRoutine - самый правильный и сложный вариант, полагаю вам не подойдет 2. Через функции ToolHelp API 3. Через функции Psapi 4. С помощью Native API Реализация 2 - здесь: http://www.delphikingdom.com/asp/vie...catalogid=1167 Реализация 4 - здесь: http://www.delphikingdom.com/asp/vie...catalogid=1279 Если интересны реализации 1 и 3 - поищите в интернете сами, ключевые слова я дал. rpy3uH Не рекомендуется использовать CreateThread в Delphi, лучше BeginThread. Знаете почему? |
|
01.11.2007, 13:27 | #6 |
добрый няша
Старожил
Регистрация: 29.10.2006
Сообщений: 4,804
|
в принципе мне по барабану, что лучше а что хуже. я просто привык именно к API функции. BeginThread это не API это просто оболочка вокруг CreateThread. Функция BeginThread отличается тем чтов ней есть проверка на тип функции: чтобы у неё был один параметр. Разумеется в Delphi лучше использовать BeginThread.
|
01.11.2007, 14:25 | #7 |
Пользователь
Регистрация: 26.10.2007
Сообщений: 79
|
BeginThread в отличие от CreateThread производит следующие действия:
1. Присваивает переменной IsMultiThread значение true, что заставит менеджер памяти работать в потокобезопасном режиме - использовать критические секции при выделении/освобождении памяти. Иначе всегда рискуем получить исключение при попытках выделить/освободить память. 2. Помещает тело потока в SEH-фрейм. В результате необработанное исключение в теле потока не приведет к краху процесса. 3. Инициализирует FPU (нужно, для операций с плавающей точкой). Если не использовать BeginThread, то все вышеперечисленное придется делать ручками. |
01.11.2007, 15:18 | #8 |
добрый няша
Старожил
Регистрация: 29.10.2006
Сообщений: 4,804
|
МОЛОДЕЦ!!!! опять ты прав.....
исходник функции BeginThread Код:
P.S. жаль что я тебе не могу написать ещё один отзыв.... (придётся ждать) Последний раз редактировалось rpy3uH; 01.11.2007 в 15:23. |
01.11.2007, 16:07 | #9 | |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
Цитата:
Код:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как получить список процессов? | SoLL | Win Api | 19 | 28.01.2012 09:52 |
как получить список запущенных процессов на компе | One.Love | Win Api | 10 | 17.03.2009 01:36 |
Получить список сетевых принтеров | Старовъръ | Win Api | 4 | 12.08.2008 17:06 |
Получить список автозагрузки, из меню ПУСК | Alter | Общие вопросы Delphi | 5 | 03.05.2008 17:45 |
Получить список папок | Иллидан | Общие вопросы Delphi | 1 | 22.03.2008 15:24 |