Форум: "WinAPI";
Текущий архив: 2002.05.06;
Скачать: [xml.tar.bz2];
ВнизKeyboard sniffer Найти похожие ветки
← →
Косильщик_Лужаёв (2002-03-02 14:27) [0]Я поставил хук на клавиатуру (SetWindowsHookEx) , все замечательно пашет , но есть одна маленькая проблемка - в процессе работы программы невозможно сворачивать окна кликая мышью по кнопочкам в таскбаре , приходится кликать на кнопку "свернуть" или лезть в контекстное меню . Как побороть ? Да , в виндовзХР такого не наблюдалось . И еще , нескромный вопрос , как можно узнать раскладку клавы в активном окне чужого приложения (по хэндлу) , а то я под это дело перекодировщик из латиницы в кириллицу уже написал )).. Только не ругайте плиз , что троянов писать нехорошо , это не троян а полезная людям утилита ))) Не , я серьёзно ...)
← →
VuDZ (2002-03-02 16:00) [1]GetKeyboardLayout
The GetKeyboardLayout function retrieves the active input locale identifier (formerly called the keyboard layout) for the specified thread. If the idThread parameter is zero, the input locale identifier for the active thread is returned.
HKL GetKeyboardLayout(
DWORD idThread // thread identifier
);
Parameters
idThread
[in] Identifies the thread to query or is zero for the current thread.
мысль ясна?
← →
Косильщик_Лужаёв (2002-03-02 17:20) [2]Мыслю твою развил и вот что получилось :
GetKeyboardLayout(GetWindowThreadProcessId(GetForegroundWindow,nil))
Долго же я мучался блин ...
← →
Косильщик_Лужаёв (2002-03-02 17:26) [3]И все-таки , как же так получается , что окошки не сворачиваются по клику на кнопке в таскбаре , когда hook установлен , а ???? Это касается w2k , в 98/ME я еще не проверял ...
← →
VuDZ (2002-03-02 18:40) [4]
> Мыслю твою развил и вот что получилось :
> Долго же я мучался блин ...
Зато понял сам, что главное :>
а вот на счёт окна... я бы мог сюда запостить све мессаги которые получает окно при сворачивание/разворачивание во время щелчка по кнопке, но это не поможет - ам нет ни одного, которое смотрит на нажатые клавиши правда у меня ХР, чем чёртне шутит)
← →
Dimaond Cat (2002-03-02 22:49) [5]видать ты где-то с хуком напортачил, лучше-бы ты свой код высветил, по крайней мере у меня постоянно работает программа с хуком на клаву и никаких проблем по сворачиванию, да и вообще, не наблюдается.
← →
Косильщик_Лужаёв (2002-03-02 23:56) [6]function HookProc(Code: integer; WParam: word; LParam: Longint): Longint; stdcall;
var key:integer;
msg:PEVENTMSG;
s: string;
begin
if Code >= 0 then begin
result := 0;
msg := Pointer(LParam);
//if msg.message=WM_KEYDOWN then begin
// key := msg.paramL and 255;
// if key=9 then s:="TAB";
//end;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
var HookHandle:hHook;
begin
HookHandle := SetWindowsHookEx(WH_JOURNALRECORD, @HookProc,HInstance, 0);
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
if HookHandle > 0 then
UnhookWindowsHookEx(HookHandle);
end;
END.
Эту функцию не я придумал , честно скажу (недавно пишу на дельфи и поэтому не во всё вьезжаю)- я ее где-то выдрал ,
а свой код весь обрезал до минимума чтоб место и чужие мозги не занимать , так вот , этот обрезанный код уже порождает вышеуказаный глюк . Еще окна разворачиваются иногда не сразу , кнопки некоторые на окнах както заторможенно реагируют на мышь , в общем как-то оно влияет на реакцию виндов на нажатия всяких кнопочек . Я пробовал эту функцию впихивать в DLL и вызывать в своей программе - результат тот-же , никаких отличий я не заметил - хотя часто слышу про то что хуки на клаву должны быть в длл-ках .
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2002.05.06;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.005 c