Ocena wątku:
  • 1 głosów - średnia: 4
  • 1
  • 2
  • 3
  • 4
  • 5
Wyłączanie (i wł.) urządzeń z konsoli pod XP/Vista
#1
Jeśli macie laptopa z wbudowaną kamerą, która lubi włączyć się akurat wtedy, kiedy nie chcecie (np. automatycznie gdy włącza się Skype) lub też dowolne inne urządzenie, którego działanie jest wam w danej chwili niepotrzebne, a tylko zżera cenne miliamperogodziny z akumulatora, istnieje możliwość ich wyłączenia z poziomu Managera Urządzeń.

Jest to jednak niewygodne, jeśli za każdym razem trzeba się przeklikiwać przez Panel Sterowania. Okazuje się, że można osiągnąć identyczny efekt z poziomu konsoli, albo - po utworzeniu odpowiedniebo BATcha - kliknięciem w ikonkę.

Oczywiście działa to także na stacjonarnych komputerach, ale chyba w laptopie jest najbardziej przydatne.

Trzeba ściągnąć ze strony MS program DevCon.exe: http://support.microsoft.com/kb/311272

Następnie "zrzucić" wszystkie urządzenia dostępne w komputerze. Najlepiej do pliku tekstowego.

Załóżmy, że rozpakowaliśmy archiwum z DevCon do katalogu C:\DevCon

Jeśli pracujecie pod pod na koncie administratora, uruchomcie konsolę (Wiersz polecenia).

Jeśli pracujecie na koncie zwykłego usera, to najlepiej uruchomić to przez Menu Start Strzałka Programy Strzałka Akcesoria Strzałka Wiersz polecenia, kliknąć prawym klawiszem i wybrać:

XP: Uruchom jako: (tu pojawi się okienko do wyboru usera i podania hasła. Trzeba wybrać konto administratora i podać jego hasło.

Vista: Uruchom jako Administrator i podać hasło.

Na potrzeby BATcha można to załatwić poprzez polecenie runas, pokażę to potem w kodzie.

Czyli mamy uruchomioną konsolę jako administrator. Jedziemy:

Kod:
C:
cd \devcon\i386

devcon find * > plik.txt

notepad plik.txt

Jeśli macie pozawijane wiersze, trzeba odhaczyć Format Strzałka Zawijanie wierszy (Word wrap)

Teraz idziecie do Managera Urządzeń (Menu start Strzałka Ustawienia Strzałka Panel sterowania Strzałka System Strzałka zakładka Sprzęt Strzałka Menedżer urządzeń)

Tutaj musicie znaleźć urządzenie, o które chodzi. Załóżmy, że chodzi o kamerę:

U mnie była to kamera. Pozycja "Urządzenia do obrazowania" (po ang. pewnie coś z "imaging devices"). Rozwijacie. Klikacie prawym klawiszem wybrane urządzenie (u mnie nazywało się to "Urządzenie video USB #2") i wybieracie Właściwości Strzałka zakładka Szczegóły Strzałka Identyfikator wystąpienia urządzenia (domyślnie wybrana opcja).

Tutaj jest identyfikator urządzenia. Kawałek z tego numeru to ID kamery, które trzeba będzie podać programowi DevCon. Jak długi ten fragment?.... Nie wiem Uśmiech

U mnie, dla ID postaci: USB\VID_05E3&PID_0505&MI_00\6&DEBFC58&0&0000

chodziło o: USB\VID_05E3&PID_0505&MI_00

Znak "&" oznacza separator kolejnych parametrów tego identyfikatora (dokładnie jak w przypadku parametrów podawanych w URL)

Jednakże tego znaku nie można użyć w konsoli, dlatego trzeba go zastąpić metaznakiem "*", a on z kolei zastępuje WIELE znaków. UWAGA, tutaj NIE MOŻNA użyć pytajnika jako oznaczającego "jeden znak" - nie przejdzie!

I teraz są jaja, bo jak podacie za krótki fragment z identyfikatora urządzenia i użyjecie gwiazdek zamiast znaków "&" (przypominam, gwiazdka oznacza "dowolny łańcuch znaków"), możecie powyłączać WIĘCEJ urządzeń, niż chcieliście Uśmiech

Np. podając USB\VID_05E3&PID_0505*

wyłączycie wszystko, co zaczyna się na USB\VID_05E3&PID_0505, a zatem np.

USB\VID_05E3&PID_0505&ABCDEF
USB\VID_05E3&PID_0505&ALA_MA_KOTA_KOT_MA_AIDS
USB\VID_05E3&PID_0505
USB\VID_05E3&PID_0505&x


Gdy podałem fragment tylko do PID'u USB\VID_05E3&PID_0505, to wyłączyłem nie tylko kamerę, ale TAKŻE koncentrator USB, który początek identyfikatora miał identyczny z kamerą), więc uważajcie lepiej Uśmiech

Lepiej podać więcej łańcucha i otrzymać komunikat, że "disable failed", niż wyłączyć za dużo i w razie czego resetować kompa.

OK, wracamy do sprawy.

Gdy zapiszcie sobie ten CAŁY identyfikator na kartce i wróćcie do pliku, do którego DevCon zrzucił listę urządzeń (plik.txt).

Ale nie myślcie, że będzie łatwo. DevCon do każdego takiego ID dokleił mi na początku 3 litery "urz" (pewnie od urządzenie). W angielskiej wersji systemu może być np. "dev". Zwróćcie na to uwagę! Przed "USB" nie być żadnych znaków.

I pamiętajcie, że wasze urządzenie na pewno jest w tym pliku, więc szukajcie uważnie.

Zapewne - jak już pisałem - znajdziecie kilka urządzeń o identycznym początku ID, więc nie zdziwcie się i szukajcie do skutku, aż znajdziecie DOKŁADNIE to, co zapisaliście na kartce.

OK, znalezione? To teraz spróbujemy zatrzymać to urządzenie.

Najpierw ZAMKNIJCIE Managera Urządzeń, bo nic z tego nie wyjdzie. Ma być tylko konsola.

Następnie uruchomcie jakiś program, który korzysta z waszej kamery (albo żądanego urządzenia). Powinna działać jak zwykle.

OK, zamknijcie go. Jeśli przy kamerze jest dioda LED, powinna zgasnąć. Odczekajcie kilka sekund.

Wracamy do konsoli (zakładam, że jesteście w katalogu z programem, np. c:\devcon\i386):

Ja będę podawał MÓJ identyfikator urządzenia, wy wpiszecie wasz. Pamiętajcie o zamianie znaków "&" na gwiazdkę i usunięciu początkowych liter przed USB (np. "urz", "dev").

Kod:
DevCon disable USB\VID_05E3*PID_0505*MI_00

Jeśli wpisaliście wszystko dobrze, to zostanie zatrzymane JEDNO urządzenie (1 device(s) disabled).

-------------------------------
Jeśli wpisaliście za krótki ID, będzie ich WIĘCEJ!

Wtedy piorunem trzeba wpisać w/w polecenie z parametrem enable, żeby uruchomić zatrzymane urządzenia.

Kod:
DevCon enable USB\VID_05E3*PID_0505*MI_00
-------------------------------

Jeśli zatrzymaliście już tę kamerę (dociekliwi mogą sprawdzić w Managerze Urządzeń, że kamera ma przekreśloną ikonkę i jest wyłączona), to teraz uruchomcie program, który korzysta z kamery. Nie powinno być widać obrazu z kamery, nie powinno jej być na liście urządzeń do wyboru no i nie powinna świecić ewentualna dioda LED.

A teraz uruchomimy kamerę:


Kod:
DevCon enable USB\VID_05E3*PID_0505*MI_00

Powinno zakończyć się komuniatem: 1 device(s) enabled.

Sprawdźcie, czy pokazuje obraz. Działa? To fajnie Uśmiech

---------------------------------------------------------------------

Ponieważ miało być wszystko automatycznie, dobrze by te polecenia wrzucić do plików BAT (komenda z enable do pliku ZalaczKamere.bat, komenda z disable do pliku WylaczKamere.bat) i wyciągnąć skróty do nich na pulpit albo jakiś pasek narzędziowy. Do skrótów można dobrać odpowiednie ikony.

Jeśli pracujecie na koncie admina, to nic więcej nie trzeba robić - będzie działać.

Jeśli pracujecie "jak pan bóg przykazał" na koncie ograniczonym, trzeba dodać polecenie runas. Pojawi się jednak problem, bo za każdym razem będziecie pytanie o hasło administratora... na razie nie wiem, jak to obejść (obejść w przypadku, gdy decyduje się na takie rozwiązanie).

Nie zadziała na pewno
Kod:
devcon disable XXXXX < haslo
gdzie haslo to plik z hasłem. Probowałem :]

Można próbować z VBS i SendKeys. Są też programiki konsolowe, które przechowują hasło w zaszyfrowanej postaci i działają jak RunAs. Pogooglajcie.

Jak ktoś okazjonalnie tylko potrzebuje załączyć/wyłączyć urządzenie, to myślę, że wpisze to hasło z palca Uśmiech

Można ograniczyć liczbę żądań hasła w ten sposób, że napiszecie BATcha:

Kod:
devcon disable XXXXX
pause
devdon enable XXXXX

utworzycie do niego skrót i w nim ustawicie, aby był uruchamiany na koncie administratora. Wtedy podacie hasło tylko raz, przy uruchamianiu.

Po wyłączeniu urządzenia konsola będzie czekać (pause), aż naciśniecie "any key" Uśmiech, po czym uruchomi urządzenie i zamknie się.
Null pointer exception
Odpowiedz


Skocz do:


Użytkownicy przeglądający ten wątek: 1 gości