![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как отследить запуск других приложений и при необходимости запетить его? [D5, Win95/98]
Маслов Толик © (2002-02-15 12:47:00)Как отследить запуск других приложений и при необходимости запетить его?
paul_shmakov (2002-02-19 12:12:00) [1]уже в сотый раз отвечаем на этот вопрос :) если решать эту задачу правильно, то перехват нужно осуществлять драйвером. если решать криво, то перехватом вызовов api.
к сожалению, старые сообщения в форуме постоянно обрезаются, поэтому осталась одна ссылка:
http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1010928576&n=5
_Tosov_ (2002-02-19 07:44:00) [2]Digitman
А я тут при чем?
У меня сейчас антивируса нет, но думаю он и CreateProcess может перехватить. Другое дело каким образом (драйвер/перехват функции..)
Almaz (2002-02-19 03:52:00) [3]>Tosov
А для антивирусов пишется свой драйвер, который и отслеживает попытки открытия файлов.
Digitman (2002-02-18 17:02:00) [4]>Olgerd
А вот ведь автор об этом, заметь - ни слова. О пользователе каком-то там.
И поэтому следует рассматривать именно общий случай - вызов тем или иным образом API-ф-ции CreateProcess()
Olgerd (2002-02-18 16:12:00) [5]>Digitman ©
Я рассматриваю варианты, когда программу запускает пользователь. А он обычно делает так.
Digitman (2002-02-18 12:27:00) [6]>Tosov
>Olgerd
А почему вы рассматриваете только вариант, когда запуск происходит из оболочки - "щелчком" на ярлыке/иконке ? Что, иные условия старта процесса в Win32 как бы уже не существуют, да ? Что, программный старт порожденного процесса MS уже отменил ?
Olgerd (2002-02-18 12:06:00) [7]Запретить запуск можно: что в реестре написано делать с файлами .exe - %1. А можно поменять на "c:\myprog.exe %1". А в своей проге уже запускать ParamStr(1) если надо. Я думаю умные люди поймут.
Tosov (2002-02-18 00:46:00) [8]
> пока еще никто (кроме MS, разумеется) не додумался
А антивирусы что делают?
Digitman (M) (2002-02-16 17:50:00) [9]Приложение ведь может быть и консольным ! А для консольного приложения окно системой не создается ! Так что, путь с поиском окон - тупиковый.
Только вот непонятно, почему вообще речь пошла о том, как принудительно закрыть некий процесс... вопрос-то стоит - как ЗАПРЕТИТЬ его запуск ? Чтобы это реализовать, надо умудриться как минимум изменить поведение ф-ции ядра CreateProcess(). А можно ли это сделать в приниципе (да еще и - корректно) - пока еще никто (кроме MS, разумеется) не додумался )))
Иван Шихалев (2002-02-15 19:01:00) [10]А если нам нужен не iexplore? Например, WinHlp32 выдает только то, что написано в файле справки.
А узнавать приложение и не надо - просто пределить классы заранее. Я так понял, что приложения-то известны еще при написании программы.
[NIKEL] (2002-02-15 18:53:00) [11]хех... а что нам мешает сделать так
if (LowerCase(Title).AnsiPos("microsoft internat explorer")
{
...
}
???
и как зная класс окна узнать какому приложению оно принадлежит?
Иван Шихалев (2002-02-15 18:49:00) [12]Сейчас у меня окно эксплорера называется
"Мастера DELPHI | Как отследить запуск других приложений и при необходимости запетить его? - Microsoft Internat Explorer". Перейду на другую страницу - будет другой заголовок. А класс окна при этом не меняется.
[NIKEL] (2002-02-15 18:41:00) [13]причем тут класс окна когда надо получить информацию какая это программа (ее название) ???
Иван Шихалев (2002-02-15 18:34:00) [14]Он стабильнее заголовка.
[NIKEL] (2002-02-15 18:13:00) [15]to Иван Шихалев
а что даст класс окна???
Иван Шихалев (2002-02-15 17:56:00) [16]Еще лучше - смотреть на класс окна. EnumWindowsEx >> GetClassName
[NIKEL] (2002-02-15 17:44:00) [17]самый банальный способ, это крутить цикл по всем окнам и смотреть их title , если встретиться чё нить на подобе "Microsoft Internet Explorer" то посылать его в даун :)