loginz
1

одинаковые коды в SetWindowsHookEx

20.04.2010, 10:09. Показов 759. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте!
Не нашел в форумах ответ, поэтому создаю тему!
при вызове функции SetWindowsHookEx: функция-обработчик KeyboardProc содержит одни и те же коды нажатых клавиш. (в файле "key.log" одна и таже повторяющаяся битовая последовательность для разных нажатий, см. ниже)

Почему? Что не так в коде? подскажите пожалуйста.
Система vista 64. Borland 2009
================================
код dll:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <windows.h>
#include <fstream.h>
#pragma argsused
 
 struct keys{
 int code;
 WPARAM wParam;
 LPARAM lParam;};
 
keys sym;
int count=0;
 
extern "C" __declspec(dllexport) LPARAM CALLBACK KeyboardProc(  int code, WPARAM wParam, LPARAM lParam)
{
 if (wParam == WM_KEYDOWN)  {
 
     sym.code = code;
     sym.wParam = wParam;
     sym.lParam = lParam;
 
     ofstream out("key.log", ios::app);
 
     if (out == 0) { MessageBoxA(0, "Error open file", "Error open file", 0); }
 
     out.write((char *)&sym, sizeof(keys));
     out.close();
 }
 
 return CallNextHookEx(0, code, wParam, lParam);
}
============================================

фрагмент кода программы (при нажатии Button1 устанавливаем хук):

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 
 static HHOOK hhook;
 static HINSTANCE hlib = LoadLibrary((LPCTSTR) "..\\..\\..\\dll\\debug\\Project1.dll");
 
 if (!hlib) {   MessageBox(0, "Error", "ErrorLoad dll", 0);   }
 
 static HOOKPROC mykey = (HOOKPROC)GetProcAddress(hlib, "KeyboardProc");
 
 if (!mykey) {  MessageBox(0, "Error", "ErrorLoad function", 0);  }
 
 hhook = SetWindowsHookEx(WH_KEYBOARD_LL, mykey, hlib, NULL);
 
 Form1->SpinEdit1->Value = (LPARAM)hhook;
 
 if ( !hhook ) {
    MessageBox(0, "Error", "ErrorLoad hook", 0);
 
 }
 
}
==================================
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.04.2010, 10:09
Ответы с готовыми решениями:

Одинаковые коды клавиш-стрелочек
Есть задача написать меню . В консольном приложении. Состоит из 6ти пунктов(строчек) Выбор строчи...

Почему одинаковые коды работают по разному?
Всем привет! У меня довольно необычная проблема. Суть её в том, что я написал программу по...

C#: WP8: как объединить одинаковые коды?
Здравствуйте. у меня есть 4 одинаковых функций, для четырех разных Image(&quot;Tap&quot;-event). как их...

Могут ли быть одинаковые хэш-коды у двух разных элементов QSet?
Добрый день. Подскажите, пожалуйста. Могут ли быть одинаковые хэш-коды у двух разных элементов...

0
20.04.2010, 10:09
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.04.2010, 10:09
Помогаю со студенческими работами здесь

Определить, какая клавиша была нажата Tab или Ctrl-I, при условии, что они имеют одинаковые ASCII-коды
Народ, помогите кто знает, плиз! Нужно определить какая клавиша была нажата Tab или Ctrl-I, при...

Сервисные коды S5230 все коды работают сам проверял
все коды работают сам проверял *#197328640# - Debug Screen Version Information RF Test Base...

Дан массив S(50).Вывести те символы (и их коды), коды которых кратны 5 и определить их количество.
Дан массив S(50).Вывести те символы (и их коды), коды которых кратны 5 и определить их количество.

Ввести коды ASCII N символов. Выбрать из них и вывести только коды цифр
Нужна помощь с заданием: Ввести коды ASCII N символов. Выбрать из них и вывести только коды цифр. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru