![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 27.06.2007
Сообщений: 6
|
![]()
Помогите разобраться с вопросом: как получить список запускаемых программ в винде за время работы данной программы(которая это все и проворачивает)??? пож-та
![]() ![]() ![]() |
![]() |
![]() |
![]() |
#2 |
добрый няша
Старожил
Регистрация: 29.10.2006
Сообщений: 4,804
|
![]()
один из простых способов:
создай отдельно поток, в котором получай каждую секунду список процессов. При первом перечислении начале создай список потом только добавляй в него новые имена процессов. P.S. в книге "Delphi глазами хакера", есть пример мониторинга приложений у которых есть окна. |
![]() |
![]() |
![]() |
#3 |
Регистрация: 27.06.2007
Сообщений: 6
|
![]()
как создать этот поток, т.е.где у нас есть этот список.откуда его вынуть?
|
![]() |
![]() |
![]() |
#4 |
добрый няша
Старожил
Регистрация: 29.10.2006
Сообщений: 4,804
|
![]()
Создать поток - функция CreateThread
Код:
(например здесь, второй пост) при получении первого списка процессов ты сохраняешь этот список в в отдельный (общий) список, при последующем получении списка процессов, смотришь какого процесса нет в общем списке и если есть таковые добавляешь туда этот процесс |
![]() |
![]() |
![]() |
#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. Знаете почему? ![]() |
|
![]() |
![]() |
![]() |
#6 |
добрый няша
Старожил
Регистрация: 29.10.2006
Сообщений: 4,804
|
![]()
в принципе мне по барабану, что лучше а что хуже. я просто привык именно к API функции. BeginThread это не API это просто оболочка вокруг CreateThread. Функция BeginThread отличается тем чтов ней есть проверка на тип функции: чтобы у неё был один параметр. Разумеется в Delphi лучше использовать BeginThread.
|
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 26.10.2007
Сообщений: 79
|
![]()
BeginThread в отличие от CreateThread производит следующие действия:
1. Присваивает переменной IsMultiThread значение true, что заставит менеджер памяти работать в потокобезопасном режиме - использовать критические секции при выделении/освобождении памяти. Иначе всегда рискуем получить исключение при попытках выделить/освободить память. 2. Помещает тело потока в SEH-фрейм. В результате необработанное исключение в теле потока не приведет к краху процесса. 3. Инициализирует FPU (нужно, для операций с плавающей точкой). Если не использовать BeginThread, то все вышеперечисленное придется делать ручками. |
![]() |
![]() |
![]() |
#8 |
добрый няша
Старожил
Регистрация: 29.10.2006
Сообщений: 4,804
|
![]()
МОЛОДЕЦ!!!! опять ты прав.....
исходник функции BeginThread Код:
P.S. жаль что я тебе не могу написать ещё один отзыв.... ![]() Последний раз редактировалось rpy3uH; 01.11.2007 в 15:23. |
![]() |
![]() |
![]() |
#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 |