Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

повторій запуск чужих программ - как этого избежать? [D6]


Novichek ©   (2002-10-11 19:44:00) 

я уже наверное задолбал всех своим "explorerom", поэто му другой вопрос: а можно тогда отлавливать запускаемые программы, и если они уже были запущены, то выгружать их? если можно то как(если можно поподробнее или с примером).
Заранее спасибо.


Ihor Osov'yak   (2002-10-11 20:24:00) [1]

Как я понимаю, программы чужие?

Если свои - проблем нет - go to к почти любому FAQ, хотя бы местному.

Далее не рецепт, а так, мысли вслух. И не очень подробные и без примеров.


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

Первый - определение момента запуска и активации. Сравнительно просто - (во всяком случае для gui, для консольных не прорабатывал - если ошибаюсь, кто-нить и исправит) - глобальный хук на активацию окна или на получение сообщения.

Второе - посложнее. Анализ класса окна и заголовка с последующим поиском дадут не всегда однозначный ответ.
Изврат типа считаем контрольную сумму некого фрагмента кода загруженного модуля - ну не знаю, немного бредовато ...
Вычисление пути к бинарному файлу - не знаю, может и подойдет.


Зы - закрыть - уже проже - в большинстве случаев поможет посылка wm_close главному окну. Но может придется убивать и главный поток процесса, если жертва на wm_close будет сопротивлятся.



Наверх

Титульная страница Поиск, карта сайта Написать письмо