| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Системное программирование и WinAPI > Не работает GetKeyNameText!!!! |
| Автор: TeeT 10.5.2006, 15:35 |
| ..... struct S_SAVE_EVENTMSG { S_SAVE_EVENTMSG() { memset(this,0,sizeof(S_SAVE_EVENTMSG)); } UINT message; UINT paramL; UINT paramH; DWORD time; }; main() { S_SAVE_EVENTMSG *p = new S_SAVE_EVENTMSG[sizeof(S_SAVE_EVENTMSG)]; FILE* in = fopen("data.$$$", "r"); fread( p, sizeof(S_SAVE_EVENTMSG), 1, in); if(!p) perror("AAA!!"); // TCHAR szKeyName[20]; // LPTSTR szKeyName; char *szKeyName = new char[20]; WORD wLo = LOWORD( p->paramL ); BYTE bLo = LOBYTE( wLo ); int res = GetKeyNameText(bLo, szKeyName, 19); printf("%s", szKeyName); delete szKeyName; delete p; fclose(in); } |
| Автор: TeeT 19.5.2006, 11:59 |
| Она до сих пор не работает !-) |
| Автор: _hunter 19.5.2006, 12:24 |
это плохо... а почему не работает? |
| Автор: GremlinProg 19.5.2006, 12:35 |
| здесь есть некоторые ошибки, скорее даже недочеты, но они не влияют на вызов GetKeyNameText. Попробуй посмотреть на содержимое p сразу после чтения, может быть там ничего нет, мусор? |
| Автор: TeeT 27.5.2006, 16:04 | ||||
Дело в том, что суда:
я ставлю так:
то есть константу, а res все равно ничего не дает ;( какая кодировка используется? может мне надо к моим значениям прибавлять что нибудь? p.s. иногда, при подстановке очередной константы она выдает название, но закономерности я не понял |
| Автор: Damarus 28.5.2006, 08:11 | ||||
TeeT, тебе стоит изучить описание GetKeyNameText
|
| Автор: TeeT 28.5.2006, 12:10 |
| Damarus у меня тоже есть Хэлп по API, но то что там пишут не всегда до конца - все равно остаётся какой нибудь нюанс. К сведенью: констаны которые я подставляю я брал функцией SetWindowsHook, то есть кодировка и формат в принципе должжны быть понятны. В HEX редакторе буквы довольно понятны |
| Автор: Damarus 28.5.2006, 15:28 |
| TeeT, ты плохо читал Хэлп. Тамже ясно написано - за кнопку отвечают биты 16-24 параметра lParam. Учитывая это, непонятно, почему ты передаёш GetKeyNameText в первом параметре байт. Неявно преобразовавшись в LONG этот байт станет младшим байтом LONG. Однако в Хэлпе написано, что младшие два байта функцией не рассматриваются. А вообще, обьясни подробней, что ты хочеш сделать и что есть S_SAVE_EVENTMSG. |
| Автор: TeeT 31.5.2006, 13:47 |
Смотри в начале темы!!! Клавиатурного шпиона. |
| Автор: Damarus 1.6.2006, 08:55 | ||||
И описание там есть
Странный подход |
| Автор: TeeT 3.6.2006, 16:29 | ||
Да вроде бы все понятно!-) какая строчка интерисует? могу поподробнее
есть предложения P.S. программа написана на Си |
| Автор: Damarus 3.6.2006, 19:34 | ||||||
Что должно содержаться в членах структуры? Как записываеться data.$$$?
Есть вопросы. Что за программа в первом посте? На клавиатурного шпиона она не тянет
Я уж думал на VB |
| Автор: TeeT 5.6.2006, 12:10 | ||||||||
Мне надо было всю прогу выкладывать, или проблему?? какая разница что делает первая прога? задача стоит в том что Не работает GetKeyNameText!!!! помоему я так спросил в начале |
| Автор: Damarus 5.6.2006, 17:27 | ||||||
Вообщем в первой программе пиши так:
PS. CallNextHookEx можно вызывать так:
|