Вело-изобретателиФорумНюансы программирования на VB6

Контрол для опроса Mouse Wheel (колёсико мыши) (5 стр)

Страницы: 1 2 3 4 5 6 Следующая »
#60
(Правка: 16:56) 16:45, 1 июля 2026
Основные шаги работы с 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
    для освобождения ресурсов. 

    - не люблю слишком явно удалять ресурсы - ведь так можно и забыть сделать это
#61
16:57, 1 июля 2026

пример кода

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
#62
(Правка: 17:22) 17:01, 1 июля 2026

ух ты

DirectInput_Initialize_Keyboard Me.hWnd

так же инициализация делается и у меня - только у меня всё это без цикла - сделал и забыл. Когда надо Windows собщит в dll а компонент узнает об этом и создаст событие - то есть не проект ждёт пользователя, а пользователь нажимает когда ему нужно и проект сразу об этом узнаёт

Ну ладно не буду ехидничать попробую и это победить!

#63
(Правка: 17:07) 17:04, 1 июля 2026

цитата:

При работе с DirectInput нужно внимательно следить за освобождением ресурсов
(вызывать Unacquire, устанавливать объекты в Nothing), чтобы избежать зависаний системы.

только только убрал все причины зависания и ШО ОПЯТЬ?

Могут возникать ошибки при работе с буферизованным вводом.
На некоторых системах могут потребоваться дополнительные настройки.

ещё и дополнительно настраивать причём неизвестно когда и в каком случае заранее?

#64
17:37, 1 июля 2026

DirectInput8 на Си
почитал и что то мне поплохело при мысли что у меня нет машины времени чтобы всё это с пониманием изучить (пойду покурю API)

#65
17:50, 1 июля 2026

пробую запустить примеры с dx - но ошибка при загрузке и далее
dx8 в vb6 не работает | Контрол для опроса Mouse Wheel (колёсико мыши)

#66
17:54, 1 июля 2026

dx8vb попробую поискать но вот вопрос а на 10-ке что будет?

#67
17:57, 1 июля 2026

нащёл добавил в папку проекта - проект с матом открывается полностью пустой

#68
18:02, 1 июля 2026

его ещё и регистрировать оказывается надо, дооолгий выдох, ШО ОПЯТЬ!!!
Да ладно у меня (перебесюсь? сделаю и никто не узнает), а если у кого нибудь?

#69
(Правка: 18:15) 18:05, 1 июля 2026

мне кажется что танцевать с этим бубном придётся не только мне но и пользователю, а я слышал что пользователи этого не любят (тссс... тайна)
Да и я не люблю танцевать доп танец при переносе проекта с компа на ноут например!

#70
(Правка: 18:24) 18:13, 1 июля 2026

попробывал 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 ?
так то история началась просто с колёсика мыши, и полностью была решена без регистрации доп компонентов в системе

#71
18:22, 1 июля 2026

Neirapik
  В 9-м Дирексе из 8-го по моему Input перекочевал без изменений практически

#72
(Правка: 18:27) 18:25, 1 июля 2026

смысл в том что нет порта Dx9, а Dx8 уже не используется и его надо заново регистрировать на каждом компе

#73
18:29, 1 июля 2026

и даже имеющийся порт на Dx9 (именно порт а не сам Dx9) всё равно регить чтобы получить к нему доступ

#74
18:31, 1 июля 2026

брр для саморазгрузки надо попробовать какую нибудь другую input задачу сделать :)

Страницы: 1 2 3 4 5 6 Следующая »
Вело-изобретателиФорумНюансы программирования на VB6