![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как определить наименование текущего приложения?
sohat © (2004-08-03 11:08:00)Некоторая программа учитывает время работы в определенном приложении. Как перехватить ввод с клавы или с мышки меня научили - через глобальный хук. А как определить текущее приложение, которому предназначено событие от клавы или мыши?
Игорь Шевченко (2004-08-03 17:34:00) [1]
> Если Вас не затруднит, подскажите пожалуйста как определить
> приложение на котором сработала ловушка
см. Digitman © (03.08.04 11:17) [1]
Digitman (2004-08-03 17:34:00) [2]function MouseHook(..): Integer; stdcall;
begin
... чего-то там
GetModuleFileName(0, ...); //ф-ция MouseHook вызвана в контексте приложения, имя исп.файла которого возвратила ф-ция GetModuleFileName
... чего-то там еще
end;
sohat (2004-08-03 17:26:00) [3]Честно говоря я с этим столкнулся впервые (Как и с API функциями вообще). Я понял так что ловушка ловит событие, обрабатывает его и отправляет дольше (это как на агурцах :) ). Теперь я понял так что хук может сработать несколько раз, в зависимости от того, сколько приложений откликнулось на событие. Если Вас не затруднит, подскажите пожалуйста как определить приложение на котором сработала ловушка (если можно на примере - с огурцами туго).
Игорь Шевченко (2004-08-03 16:07:00) [4]
> То есть мое ?
Если хук сработал в твоем, то твое. Если хук сработал не в твоем, то чужое. DLL с хуком загружается в адресное пространство каждого приложения, в котором срабатывает этот хук.
Digitman (2004-08-03 15:55:00) [5]
> sohat (03.08.04 15:43) [4]
> То есть мое ?
ты вообще-то себе представляешь весь механизм работы глоб.ловушки ? хотя бы на огурцах ?
sohat (2004-08-03 15:43:00) [6]То есть мое ?
А как же тогда определить приложение в котором работает юзер?
Игорь Шевченко (2004-08-03 15:12:00) [7]
> Запущено три приложения, как узнать какое из них в данный
> момент активно
То, в котором сработал глобальный хук
sohat (2004-08-03 14:28:00) [8]Запущено три приложения, как узнать какое из них в данный момент активно (находится в фокусе)?
Digitman (2004-08-03 11:17:00) [9]DWORD GetModuleFileName(
HMODULE hModule, // handle to module to find filename for
LPTSTR lpFilename, // pointer to buffer for module path
DWORD nSize // size of buffer, in characters
);
Parameters
hModule
Identifies the module whose executable filename is being requested. If this parameter is NULL, GetModuleFileName returns the path for the file used to create the calling process.