Написал небольшую прогу, которая инициализирует DirectInput, создает устройство стандартной клавиатуры, ждет в цикле нажатия ESC и выходит. Ни одна из функций не возвращает ошибку, структура dfDIKeyboard корректна, а считывать клавиши прга не хочет? В чем может быть проблема? Может кто-либо сталкивался с подобным?
S_T_A_S_ Прилагаю exe Программа создает 2 потока: один - пустой (тестовый, который навечно зациклен), а второй - для получения ввода с клавиатуры через DirectInput. В этом втором потоке организован опрос клавиатуры через DirectInput и проверки нажатия клавиш. По нажатию ESC поток заканчивает свою работу, отправляя основному окну сообщение WM_USER+1. Процедура обработки сообщений окна содержит проверку сообщения WM_USER+1, которое является сигналом завершения работы потока. По его получении отдается команда всем потокам завершить свою работу, а после этого - осуществляется выход в ОС. Кроме того, в программе реализован механизм проверки потоков на зависание. Для этого обрабатывается сообщение WM_TIMER и 1 раз в 10 секунд процедура обработки сообщений окна, используя таймер, пингует все работающие потоки. Если хотя бы один из потоков не отвечает (что расценивается как зависание), то он принудительно закрывается, а всем остальным потокам в этом случае отдается команда завершить свою работу. Поскольку 1 поток изначально "висит", программа гарантированно закончит работу через 10 секунд после старта. Не могу понять почему, но DirectInput работать не хочет, хотя ни одна из его функций ошибки не выдает. _1467890125__proba.exe
А код показать религия не позволяет? по экзешнику не понятно - вроде бы всё нормально, но массив под клавиши не заполняется никогда. У меня такое случалось, если c_dfDIKeyboard неправильная. Хотя у тя там како-то старый интерфейс юзается, может в этом дело? (я меньше 7го не использовал никогда) Возьми готовые сорцы да подправь под себя. Если 7й DI подходит, то на сайте лежит моя прошлоновогдняя интра на MASM, там есть опрос клавы. Если на Си, то на форуме недоделаная моя игрушка лежит.
Вообще написано на МАСМе. Исходника, правда, пока нет (надо из дому принести). Как принесу, скину... Чего то мне думается, что дело не в DirectInput, а в самом потоке: может он заканчивается некорректно и при закрытии вызывает сбой? Попробую также через 7 интерфейс сделать. Надеюсь, что заголовочного файла для 6 версии хватит (для 7 у меня нет)
Для 7й версии я делал инклуды - http://www.wasm.ru/src/3/hny2k4.zip если вдруг будешь это компилить, подправь пути к инклудам, я их сдуру жёстко прописал в проекте RadAsm.