Дано: Программа, которая загружает библиотеку, а та в свою очередь устанавливает хук
function ControlHook(Code: integer; wParam: word; lParam: Longint):LongInt;
begin
if code<0 then Result:=CallNextHookEx(GlobalData^.ControlHookHandle,Code, wParam, lParam)
else
begin
if Code=HSHELL_WINDOWCREATED then
begin
{.....}
end;
Result:=0;
CallNextHookEx(GlobalData^.ControlHookHandle, Code, wParam, lParam);
end;
end;
все прекрасно работает если эта программа запущена из под активного пользователя, но еси она запущена от имени другого пользователя то она не срабатывает. м.б как-то не так делаю?)
T>все прекрасно работает если эта программа запущена из под активного пользователя, но еси она запущена от имени другого пользователя то она не срабатывает. м.б как-то не так делаю?)
Что значит от имени другого пользователя? Что это за другой пользователь и на каком десктопе запускается программа?
SetWindowsHookEx устанавливает хук который распространяется на процессы пользовательского аккаунта к процессам которого у тебя есть доступ (те если ты не можешь открыть OpenProcess(PROCESS_ALL_ACCESS,.. ) какой то процесс то твой хук на него не подействует). + Хуки распространяются только на тот десктоп на котором работает устанавливающий хук поток.
Здравствуйте, apple-antonovka, Вы писали:
AA>Что значит от имени другого пользователя? Что это за другой пользователь и на каком десктопе запускается программа?
AA>SetWindowsHookEx устанавливает хук который распространяется на процессы пользовательского аккаунта к процессам которого у тебя есть доступ (те если ты не можешь открыть OpenProcess(PROCESS_ALL_ACCESS,.. ) какой то процесс то твой хук на него не подействует). + Хуки распространяются только на тот десктоп на котором работает устанавливающий хук поток.
от имени другого пользователя, т.е запускается при помощи CreateProcessWithLogonW от имени администратора.
клавиатурный хук вполне нормально работает.