Podobne do this question, ale ... czy możliwe jest wyzwolenie przez interfejs API nowego skanowania urządzenia sprzętowego? Mam urządzenie Bluetooth portu szeregowego, które paruję automatycznie za pomocą wywołań API z 32feet.net .NET Bluetooth, co działa całkiem nieźle. Chociaż mogę zapytać o usługi szeregowe podczas skanowania urządzenia, porty COM nie pojawiają się na karcie Porty COM okna urządzeń Bluetooth.Czy jest wywołanie API, aby rozpocząć skanowanie urządzeń sprzętowych?
Odpowiedz
Podobne do Programmatically uninstall a device in windows device manager
Moja odpowiedź stamtąd:
Aby wymusić tam „skanuj do sprzętu zmiany” kasie „How To Force Reenumeration of a Device Tree From an Application” próbkę pokazuje jak zmusić całe drzewo do być ponownie wyliczony.
Czy moja odpowiedź jest następująca? How can I find out a COM port number of a bluetooth device in c#?
W skrócie użyj System.IO.Ports.SerialPort.GetPortNames()
lub WMI, aby wyświetlić listę portów szeregowych, np. Polecenie PowerShell:
C:\> Get-WmiObject -query "select DeviceID,PNPDeviceID from Win32_SerialPort"
Można to również zrobić w kodzie.
Nie jestem pewien, czy to pomoże w ogólnym problemie, ale powinno to odpowiedzieć na pytanie w pierwszym zdaniu.
Pierwotnie zrobiłem coś takiego za pomocą instalatora NSIS Nullsoft kilka lat temu.
Jeśli chcesz po prostu wywołać skanowanie sprzętu wanilia można użyć następującego kodu (w języku C# za znacznikiem .net w tej kwestii):
To jest klasa wrapper dla P/Invoke funkcje
public static class Win32Api
{
public const int CM_LOCATE_DEVNODE_NORMAL = 0x00000000;
public const int CM_REENUMERATE_NORMAL = 0x00000000;
public const int CR_SUCCESS = 0x00000000;
[DllImport("CfgMgr32.dll", SetLastError=true)]
public static extern int CM_Locate_DevNodeA(ref int pdnDevInst, string pDeviceID, int ulFlags);
[DllImport("CfgMgr32.dll", SetLastError=true)]
public static extern int CM_Reenumerate_DevNode(int dnDevInst, int ulFlags);
}
to jest przykład tego, jak z nich korzystać
int pdnDevInst = 0;
if (Win32Api.CM_Locate_DevNodeA(ref pdnDevInst, null, Win32Api.CM_LOCATE_DEVNODE_NORMAL) != Win32Api.CR_SUCCESS)
throw new Exception("something...");
if (Win32Api.CM_Reenumerate_DevNode(pdnDevInst, Win32Api.CM_REENUMERATE_NORMAL) != Win32Api.CR_SUCCESS)
throw new Exception("something else...");
Po prostu szybko przetłumaczyłem to z dokumentacji MSDN C++ i przetestowałem je w postaci kolca, więc wiem, że działa, ale nie jest to jakość produkcji. Ponadto, jeśli zależy ci na konkretnych kodach powrotu, możesz je wyszukać w cfgmgr32.h.
nie patrzyłem na poprzednie odpowiedzi, ale na wszelki wypadek, gdy myślałeś, że skopiowałem tutaj oryginalną wersję, którą zrobiłem w NSIS: http://forums.winamp.com/showthread.php?t=192348 –
Również moja jest w C# a próbka MS znajduje się w klasycznym VB. –
Działa jak urok. Uwaga: MUSISZ PROWADZIĆ POŁĄCZENIA WINAPI Z PRAWAMI ADMINISTRACYJNYMI! Testowany na Windows 8 x64 – JanW
Właśnie znalazłem this SO post, które również może rozwiązać mój problem lub inne osoby, które znajdą to pytanie.
- 1. Omówienie/instrukcja obsługi otwartych drzew sprzętowych urządzeń sprzętowych
- 2. Implementacja sygnałów zegarowych sprzętowych w jądrze Linux
- 3. Dlaczego wykonywane jest skanowanie tabeli?
- 4. Wyłączanie przerwań sprzętowych i programowych
- 5. Korzystanie z kontekstu, aby rozpocząć inną działalność
- 6. Jak rozpocząć tworzenie API aplikacji w .NET
- 7. UITextField Ustaw kursor, aby rozpocząć pozycję tekstową
- 8. Aby wykonać wywołanie API za pomocą tokenu OAuth
- 9. Jaki jest najlepszy sposób określenia, czy strona internetowa jest przeznaczona dla urządzeń przenośnych?
- 10. Czy możliwe jest wykrywanie urządzeń Android leżących obok siebie?
- 11. Gdzie jest wywołanie API, aby wykonać "tryb wyłączenia" w strukturze plastra miodu?
- 12. Szyny czy Sinatra? Co jest dobre, aby rozpocząć naukę dla programisty PHP?
- 13. PostgreSQL Bitmap Skanowanie sterty na indeksie jest bardzo powolne, ale skanowanie tylko indeksu jest szybkie
- 14. Czy można kontrolować skanowanie w klasie Ścieżka?
- 15. Jak dodać kalkulator, aby rozpocząć wyszukiwanie w menu?
- 16. Skanowanie listy
- 17. Ile szczegółów sprzętowych może aplet Java odkryć?
- 18. MAILTO Link w e-mailu, aby rozpocząć nowy e-mail
- 19. Skanowanie w tle iBeacon
- 20. Czy istnieje wywołanie interfejsu API, aby monitować użytkownika o podniesienie UAC?
- 21. Czy jest możliwe utworzenie usługi Android, która nasłuchuje naciśnięć przycisków sprzętowych?
- 22. Jaki jest limit przydziału na wywołanie Kontakt v3 Google API
- 23. Chcę rozpocząć naukę Demandware
- 24. Pióra wywołanie niestandardowej metody API
- 25. Czy jest wywołanie zwrotne dla History.pushstate?
- 26. Czy wywołanie JavaScript location.href jest asynchroniczne?
- 27. Wykonaj głębokie skanowanie git, aby porównać pliki dla rzeczywistych
- 28. Django: Czy powinienem rozpocząć osobny proces?
- 29. Skanowanie zasięgu a unikatowe skanowanie i pomijanie skanowania
- 30. Rekursywne wywołanie WPF do interfejsu API automatyzacji nie jest poprawne
Dzięki Ruddy, to brzmi dobrze. Spróbuję to wkrótce. – kenny