WWW.ИСХОДНИКИ.РУ cpp.sources.ru
java.sources.ru web.sources.ru soft.sources.ru
jdbc.sources.ru asp.sources.ru api.sources.ru

  Форум на исходниках
  C / C++ / Visual C++
  API и запуск программ уточнение!

СПРОСИТЬ  ОТВЕТИТЬ
профайл | регистрация | faq

Автор Тема:   API и запуск программ уточнение!
FtoR опубликован 21-03-2001 12:50 MSK   Click Here to See the Profile for FtoR   Click Here to Email FtoR  
В предыдущем сообщении ОlegO написал о том, как можно предотвратить запуск одной и той же проги, используя код ВНУТРИ этой проги созданием Mutex (действительно это старая тема). У меня другая ситуация, необходима прога, которая (как бы извне) отслеживает, с помощью API функций, ЗАПУСК совершенно другой программы. Здесь также можно обойтись созданием Mutex для внешней программы при ее запуске , но как отследить ее запуск?? (что-то в духе прерывания). Может я все-таки чего-то не догнал?
С уважением FtoR.
Lunya опубликован 22-03-2001 14:02 MSK     Click Here to See the Profile for Lunya  Click Here to Email Lunya     
Мне кажется, ты можешь сделать DLL, которая будет "резедентно" ловить сообщения shell Windows, например, при помощи WH_SHELL hook. А далее при каждом обнаруженном запуске новой программы передавать управление твоей программе, которая будет проверять - не появилось ли в системе процессов с одинаковым именем (с помощью TPROCESSENTRY32). Если появились - можно например выдать сообщение пользователю или выполнять иное программное действие.
FtoR опубликован 22-03-2001 16:02 MSK     Click Here to See the Profile for FtoR  Click Here to Email FtoR     
Lunya, ты прав, спасибо. Если я правильно понял, то у меня появилась идея, напрямую связанная с HOOK в API функциях. Таким образом можно вообще предотвратить запуск ненужной проги. HOOK на процессы по-моему нет, а вот на CreateWindow можно сделать, вообщем надо HOOKи повнимательней посмотреть. Единственный минус HOOK - насколько они замедляют функционирование процессов в реальном времени?
webmaster опубликован 22-03-2001 16:10 MSK     Click Here to See the Profile for webmaster  Click Here to Email webmaster     
2 FtoR:

Lunya - девушка :)

Flex Ferrum опубликован 22-03-2001 18:23 MSK     Click Here to See the Profile for Flex Ferrum  Click Here to Email Flex Ferrum     
ИМХО, в таком случае, лучше через тот-же TPROCESSENTRY32 мониторить с некоторой периодичностью весь список процессов на предмет вновь появившихся, т. к. оба хука будут охватывать не все варианты запуска. Плюс к этому можно изменить содержание переменной окружения ComSpec (на какой-нибуть батник), с целью отлова запуска досовских и им подобдых прог.
FtoR опубликован 23-03-2001 10:04 MSK     Click Here to See the Profile for FtoR  Click Here to Email FtoR     
Lunya, sorry :).
Хотя в основном вообщем-то ради ИМЕННО досовской программы все это и пишется, и там (в досовском режиме) есс-но есть свои грабли. А вот про переменную CompSpec, не слышал, поскольку еще новичок :)
Flex Ferrum опубликован 23-03-2001 10:31 MSK     Click Here to See the Profile for Flex Ferrum  Click Here to Email Flex Ferrum     
Переменная ComSpec указывает на командный процессор системы. В Win95/98 это command.com, в WinNT - cmd.exe. Все грамотно написанные программы запускают любые консольные (и не только) приложения через него (иначе много глюков может возникнуть). По сему, можно написать программу-заместитель которая сохраняет оригинальное значение этой переменной, и прописывает туда себя, после чего занимается запуском приложений, передаваемых в качестве параметра. Правда, задача это не тривиальная.
PS. А досовские проги через TPROCESSENTRY32 не видны под своими оригинальными именами.
FtoR опубликован 23-03-2001 13:38 MSK     Click Here to See the Profile for FtoR  Click Here to Email FtoR     
Thanx, видимо сначала придется поэкспериментировать под 32, а потом уже разбираться досовским сеансом и его премудростями.

СПРОСИТЬ  ОТВЕТИТЬ
Перейти:


E-mail | WWW.ИСХОДНИКИ.RU

Powered by: Ultimate Bulletin Board, Freeware Version 5.10a
Purchase our Licensed Version- which adds many more features!
© Infopop Corporation (formerly Madrona Park, Inc.), 1998 - 2000.