Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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.007 c
1-17546
Игорь Алексеев
2002-04-24 09:05
2002.05.06
ColorDialog


4-17757
EveryonE
2002-02-28 18:32
2002.05.06
классы


3-17507
Катерина
2002-04-12 11:49
2002.05.06
Десятичные знаки в DBF


3-17477
Yuraz
2002-04-12 10:54
2002.05.06
Помогите собрать CGI+BD пример,


1-17555
nomshar
2002-04-22 02:53
2002.05.06
Организация выпадающего списка в текстовом редакторе





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский