Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.07.08;
Скачать: CL | DM;

Вниз

Управление приложениями   Найти похожие ветки 

 
Коврик ©   (2002-06-23 19:36) [0]

Хотелось бы спросить:
Есть мысль сделать программу, способную отслеживать запуск других приложений и как-либо влиять на их дальнейшую работу(закрытие,сворачивание,убирание ее в трей).Но как реализовать это не знаю.
Если кто знает, где можно посмотреть подобный код, или кинуть ссылку, где можно это прочитать,откликнитесь, пожалуйста.
Заранее благодарен!


 
rhf ©   (2002-06-23 19:45) [1]

главная ссылка - SDK :)


 
rhf ©   (2002-06-23 19:48) [2]

почитай про хуки тут
http://delphi.mastak.ru/articles/hooks/index.html

а то как закрыть, свернуть приложение и т.п. есть в каждом faq


 
DenKop ©   (2002-06-23 23:23) [3]

Кратко: свернуть, развернуть, закрыть приложение можно так:
1)Находишь по названию окна его handle(GetWindow, GetWindowText...)
2)Далее посылаешь ему сообщение WM_SYSCOMMAND

Вот это из SDK:

LRESULT SendMessage(

HWND hWnd, // handle of destination window
UINT Msg, // message to send
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
);

BOOL PostMessage(

HWND hWnd, // handle of destination window
UINT Msg, // message to post
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
);

Берёшь одну из этих функций (взависимости от того насколько серьёзно ты решил поуправлять приложением) и передаёшь ей параметры.
В качестве Msg: WM_SYSCOMMAND
wPARAM: SC_MINIMIZE
SC_MAXIMIZE
SC_CLOSE и т.д.
lPARAM: NULL
Вот и всё!






 
polygon   (2002-06-25 21:50) [4]

2 способа отслеживания запуска приложения
1.(простой до безобразия) В HKEY_CLASSES_ROOT описано что делать shell"у при запуске того или иного файла. Находим /exefile/shell/open/command. В значении по умолчанию вместо "%1" %* пишем myprog.exe "%1" %*. В результате при запуске любого EXE запускается myrog.exe и получает строку запуска приложения в качестве параметра. Запустить иль отвергнуть сие приложение дело на наших рук.(большой МИНУС этого способа заключается в том что отлавливается только ShellExecute, CreateProcess проходит).
2.(мощный и сложный)Этим способом отлавливается создание любого процесса. Пишем динамический VXD и отлавливаем следующие VXD сообщения
Control_Dispatch Create_Process, OnCreateProcess
Control_Dispatch Destroy_Process, OnDestroyProcess
Хочу заметить что они (сообщения) не описаны в DDK :(
в EDX возвращается Handle процесса. Далее с помощью _SHELL_PostMessage отсылаем Handle своему приложению которое и решает что делать дальше.






Страницы: 1 вся ветка

Текущий архив: 2002.07.08;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.012 c
3-23521
?
2002-06-17 15:20
2002.07.08
формат Excel


6-23721
Иван
2002-04-27 19:28
2002.07.08
сетевой компьютер на локальной машине


3-23443
Dark Programmer
2002-06-14 11:36
2002.07.08
Как получить доступ к записи в ДБГриде?


6-23700
Hash
2002-04-29 01:42
2002.07.08
не работает TCP/IP


8-23677
Lenidus
2002-02-27 23:46
2002.07.08
Тень от TPanel