Форум: "Основная";
Текущий архив: 2002.07.08;
Скачать: [xml.tar.bz2];
ВнизУправление приложениями Найти похожие ветки
← →
Коврик (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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.009 c