Mam program C++, który wylicza wszystkie urządzenia wejściowe (za pomocą wejścia bezpośredniego) na początku programu. Jeśli program zostanie uruchomiony, a następnie podłączę inny kontroler, kontroler ten nie zostanie rozpoznany do czasu ponownego uruchomienia programu. Ktoś wie o zdarzeniu, które mogę wykorzystać, aby mój program wyliczył wszystkie urządzenia po podłączeniu nowego?Używanie DirectInput do odbierania sygnału po podłączeniu joysticka
Odpowiedz
This article omawia sposób wykrywania zmian padów w pendrive. Przede wszystkim można obsłużyć wiadomość WM_DEVICECHANGE
i sprawdzić wParam
dla DBT_DEVICEARRIVAL
lub DBT_DEVICEREMOVECOMPLETE
. Wygląda na to, że aby je otrzymać jako WPARAM
, musisz najpierw zadzwonić pod numer RegisterDeviceNotification
.
Przykład artykułu o tym, jak to zrobić w następujący sposób:
DEV_BROADCAST_DEVICEINTERFACE notificationFilter;
ZeroMemory(¬ificationFilter, sizeof(notificationFilter));
notificationFilter.dbcc_devicetype = DBT_DEVTYP_DEVICEINTERFACE;
notificationFilter.dbcc_size = sizeof(notificationFilter);
HDEVNOTIFY hDevNotify;
hDevNotify = RegisterDeviceNotification(m_hWnd, ¬ificationFilter,
DEVICE_NOTIFY_WINDOW_HANDLE |
DEVICE_NOTIFY_ALL_INTERFACE_CLASSES);
if(hDevNotify == NULL) {
// do some error handling
}
Jedyną rzeczą, aby zwrócić uwagę na to, że minimalna obsługiwana OS za to XP, więc trzeba umieścić w odpowiednim #define
do tego przed włączeniem nagłówków Windows.
W zależności od tego, co chcesz zrobić, możesz nawet nie zadzwonić do tej funkcji. Zamiast tego możesz po prostu sprawdzić, czy DBT_DEVNODES_CHANGED
nie rozróżnia urządzenia podłączanego lub odłączonego. To może zaoszczędzić trochę kodu, jeśli cię to nie obchodzi.
- 1. Jak rozwiązać OpenSSL s_client po podłączeniu
- 2. Zapobieganie resetowaniu po podłączeniu monitora szeregowego?
- 3. socat kończy się po podłączeniu ścisłej
- 4. Obsługa joysticka w Javie
- 5. Android ExoPlayer nie jest wznawiany po podłączeniu do sieci
- 6. Android BLE GATT_ERROR (133) po podłączeniu do urządzenia
- 7. MVC5 wisi na MapSignalR po ponownym podłączeniu po AppPool cykli
- 8. Pierwsze wejście joysticka w Javie
- 9. Używanie Matlab FFT do wyodrębniania częstotliwości z sygnału EEG
- 10. Numer sygnału do nazwania?
- 11. Pakiet Eclipse ADT zawiesza się po podłączeniu telefonu
- 12. Symulowanie klawiatury za pomocą interfejsu SendInput API w aplikacjach DirectInput
- 13. Usługa odbierania wiadomości SMS
- 14. Używanie przedłużenia reaktywnego (Rx) do odbierania wiadomości MSMQ za pomocą asynchronicznego wzorca (queue.BeginReceive, queue.EndReceive)
- 15. Używanie CursorLoader do odbierania wiadomości e-mail powoduje duplikowanie wiadomości e-mail
- 16. Używanie ko.utils.arrayForEach do iterowania po obiekcie obserwowalnym
- 17. Używanie: po selektorze CSS do wypełnienia spacji?
- 18. odbierania danych przez gniazdo Pythona
- 19. Nie można uruchomić macvima po podłączeniu do dodatkowego wyświetlacza i odłączeniu
- 20. prosty program Java 100 razy wolniej po podłączeniu do Internetu USB
- 21. Dlaczego widzę komunikat "Błąd HTTP 400. Nazwa hosta żądania jest nieprawidłowa." Po podłączeniu do usługi WCF
- 22. Po podłączeniu do MySQL przez SSL otrzymanie ERROR 2026 (HY000): Błąd połączenia SSL: niezgodność wersji protokołu
- 23. Biblioteczne javadocs generowane przez maven-javadoc-plugin nie działa po podłączeniu do Eclipse
- 24. Funkcja cichego powiadomienia push w systemie iOS działa tylko po podłączeniu do xcode
- 25. React Router 4.x - PrivateRoute nie działa po podłączeniu do Redux
- 26. Propagowanie sygnału (SIGINT) do C++ 11 wątków
- 27. Dodawanie szumu do sygnału w pythonie
- 28. Qt "błąd niezdefiniowanego sygnału odniesienia" po odziedziczeniu z QObject
- 29. Dane wysyłania/odbierania urządzenia USB
- 30. Zachowanie sygnału POSIX
Wygląda na to, że to zrobi! Dzięki! – Magn3s1um