Основные шаги работы с DirectInput в VB6:
Создать объект DirectX.
Получить из него объект DirectInput (обычно DirectInput8).
Создать устройство (например, клавиатуры или мыши) с помощью метода
CreateDevice
, передав в него GUID устройства ("GUID_SysKeyboard" или "guid_SysMouse").vbforums.comvbnet.ru
Задать формат данных (например, DIFORMAT_KEYBOARD или DIFORMAT_MOUSE). vbnet.ru
Установить режим совместного доступа к устройству с помощью
SetCooperativeLevel (например DISCL_BACKGROUND Or DISCL_NONEXCLUSIVE).vbforums.comvbnet.ru - а если не устанавливаю то помешаю кому то? случайно
Получить доступ к устройству методом Acquire . vbforums.comvbnet.ru
В ЦИКЛЕ регулярно вызывать
- А ВОТ ТУТ первый неприятный звоночек - мне что отдельный поток под этот цикл делать (vb6 однопоточен если что) или весь проект только и будет что этот цикл на максимуме гонять чтобы ничего не пропустить, ну ладно попробую как нибудь обойти (пока не знаю как)
GetDeviceState
для получения текущего состояния устройства. vbforums.com
Когда устройство больше не нужно, вызвать
Unacquire
для освобождения ресурсов.
- не люблю слишком явно удалять ресурсы - ведь так можно и забыть сделать этопример кода
Private Running As Boolean
Private Sub Form_Activate()
DirectInput_Initialize_Keyboard Me.hWnd
Running = True
Do While Running = True
DoEvents
If DirectInput_Key_State(DIK_SPACE) <> 0 Then
MsgBox "Пробел нажата"
End If
Loop
DirectInput_Shutdown
Unload Me
End Sub
Private Sub Form_Unload(Cancel As Integer)
Running = False
End Subух ты
DirectInput_Initialize_Keyboard Me.hWnd
так же инициализация делается и у меня - только у меня всё это без цикла - сделал и забыл. Когда надо Windows собщит в dll а компонент узнает об этом и создаст событие - то есть не проект ждёт пользователя, а пользователь нажимает когда ему нужно и проект сразу об этом узнаёт
Ну ладно не буду ехидничать попробую и это победить!
цитата:
При работе с DirectInput нужно внимательно следить за освобождением ресурсов
(вызывать Unacquire, устанавливать объекты в Nothing), чтобы избежать зависаний системы.
только только убрал все причины зависания и ШО ОПЯТЬ?
Могут возникать ошибки при работе с буферизованным вводом.
На некоторых системах могут потребоваться дополнительные настройки.
ещё и дополнительно настраивать причём неизвестно когда и в каком случае заранее?
DirectInput8 на Си
почитал и что то мне поплохело при мысли что у меня нет машины времени чтобы всё это с пониманием изучить (пойду покурю API)
пробую запустить примеры с dx - но ошибка при загрузке и далее

dx8vb попробую поискать но вот вопрос а на 10-ке что будет?
нащёл добавил в папку проекта - проект с матом открывается полностью пустой
его ещё и регистрировать оказывается надо, дооолгий выдох, ШО ОПЯТЬ!!!
Да ладно у меня (перебесюсь? сделаю и никто не узнает), а если у кого нибудь?
мне кажется что танцевать с этим бубном придётся не только мне но и пользователю, а я слышал что пользователи этого не любят (тссс... тайна)
Да и я не люблю танцевать доп танец при переносе проекта с компа на ноут например!
попробывал DirectX9
встроенной поддержки DirectX 9 в самом Visual Basic 6 нет. Но энтузиасты давно решили эту задачу — они сделали порт (wrapper) библиотеки типов (файл .tlb), который позволяет VB6 работать с DirectX 9
Это не официальная библиотека от Microsoft. Её создал отдельный разработчик (The trick), поэтому в ней могут быть нюансы или недочёты — часть функций тестировалась слабо. forum.sources.ru
Поищите по запросам вроде «DirectX 9 for Visual Basic 6» или «dx9vb.tlb». Такие библиотеки встречаются на профильных форумах и в репозиториях на GitHub. github.combbs.vbstreets.ru
Если при попытке подключить библиотеку или в коде возникнет ошибка — напишите текст ошибки и строку, где она появилась. Я помогу разобрать, в чём дело!
хм - ещё и автора ручной самоделки подключать чуть что (если что не в обиду автору мне например до такой "самоделки" далеко)
ТАНЕЦ С БУБНОМ СТАНОВИТСЯ ГРУППОВЫМ :o
си на полном серьёзе изучать несколько месяцев исключительно ради порта на Dx9 ?
так то история началась просто с колёсика мыши, и полностью была решена без регистрации доп компонентов в системе
Neirapik
В 9-м Дирексе из 8-го по моему Input перекочевал без изменений практически
смысл в том что нет порта Dx9, а Dx8 уже не используется и его надо заново регистрировать на каждом компе
и даже имеющийся порт на Dx9 (именно порт а не сам Dx9) всё равно регить чтобы получить к нему доступ
брр для саморазгрузки надо попробовать какую нибудь другую input задачу сделать :)