Theorie zuerst
- Wir müssen regelmäßig prüfen, ob die externe Webcam an den Computer angeschlossen ist.
- Wenn die externe Webcam angeschlossen, die eingebaute in einem sollte deaktiviert .
- Das eingebaute Gerät sollte dann wieder aktiviert werden, nachdem die externe Kamera vom Stromnetz getrennt wurde .
Vorläufige Schritte
Die vorgeschlagene Lösung verwendet Batch-Scripting- und Task-Scheduling-Techniken, um all dies zu handhaben. Bevor wir tatsächlich zu den saftigen Stücken springen können, müssen wir einige Dinge tun.
Beziehen Sie das Dienstprogramm Device Console (DevCon)
DevCon ist ein Befehlszeilentool, das detaillierte Informationen zu Geräten anzeigt und Sie über die Befehlszeile nach Geräten suchen und diese bearbeiten können. DevCon aktiviert, deaktiviert, installiert, konfiguriert und entfernt Geräte auf dem lokalen Computer und zeigt detaillierte Informationen zu Geräten auf lokalen und Remote-Computern an.
Laden Sie das entsprechende
.cab
Paket je nach Betriebssystem herunter :Öffnen Sie das
.cab
Archiv und extrahieren Sie die Datei mit dem Namenfil[some letters and numbers]
. Es sollte ungefähr 80 KB sein.- Benennen Sie es in um
devcon.exe
.
Hinweis Damit ein Gerät aktiviert / deaktiviert werden kann, devcon.exe
muss es mit Administratorrechten ausgeführt werden.
Bestimmen Sie die erforderlichen Hardwarekennungen
Windows identifiziert Geräte und die zugehörigen Setup-Klassen mithilfe eines speziellen Satzes von Bezeichnern. Diese Bezeichner werden verwendet, um Hardwaregeräte mit den Gerätetreibern abzugleichen, die ihnen die Kommunikation mit Windows ermöglichen.
Eine oder mehrere Geräte-IDs werden einem Gerät vom Hersteller zugewiesen. Eine davon, die Hardware-ID, ist sehr spezifisch - abhängig von Hersteller, Modell und sogar der Firmware-Version des Geräts. Andere Geräte-IDs werden ebenfalls zugewiesen und sind allgemeiner, wobei die IDs möglicherweise anderen Geräten des Herstellers zugewiesen werden, die auf einer bestimmten Ebene kompatibel sind.
Quelle: Ermitteln von Hardware-IDs und Geräteeinrichtungsklassen für Ihre Geräte
- Schließen Sie die externe Webcam an.
- Öffnen Sie den Geräte-Manager (
devmgmt.msc
). - Finden Sie Ihre eingebaute Kamera in der Liste.
- Klicken Sie mit der rechten Maustaste auf den Eintrag für das Gerät, und klicken Sie dann auf Eigenschaften .
- Wählen Sie die Registerkarte Details aus, und wählen Sie in der Eigenschaftsliste Hardware-IDs aus.
- Klicken Sie mit der rechten Maustaste auf den ersten angezeigten Wert und kopieren Sie ihn. Notieren Sie den Wert irgendwo.
- Wiederholen Sie die Schritte 3 bis 6 für die externe Webcam.
Batch-Skript erstellen
Speichern Sie den folgenden Code als
WebcamCheck.cmd
:@echo aus REM stellen dort mindestens 2 Parameter sicher wenn "% ~ 2" == "" exit / b 2 REM verifizieren, dass devcon.exe nicht fehlt cd / d "% ~ dp0" Wenn nicht vorhanden, devcon.exe exit / b 3 REM setzt das Intervall auf 15 Sekunden, falls nicht angegeben Wenn "% ~ 3" == "" (Set Intervall = 15), sonst (Set Intervall =% 3) :Umfrage for / f "tokens = 1 delims = \" %% G in ("% ~ 2") do (devcon.exe sucht * %% G * | findstr / i / c: "% ~ 2"> nul) gehe zu: check% errorlevel% : check0 devcon.exe status "% ~ 1" | findstr / i / c: "disabled"> nul if% errorlevel% == 1 (devcon.exe deaktiviert "% ~ 1") :warten Timeout / t% Intervall% / Nobreak> nul goto: umfrage : check1 devcon.exe status "% ~ 1" | findstr / i / c: "disabled"> nul Wenn% errorlevel% == 0 (devcon.exe aktiviert "% ~ 1") gehe zu: warte
Kopieren Sie die
devcon.exe
Datei und fügen Sie sie in das gleiche Verzeichnis wie die gerade gespeicherte Datei ein.
Wie es funktioniert
Das Skript benötigt drei Parameter: Der erste ist die Zielgeräte-ID (die integrierte Webcam). die zweite ist die Trigger-Geräte-ID (die externe Webcam); Der dritte ist das Abfrageintervall (in Sekunden) und optional.
Zuerst stellt das Skript sicher, dass genügend Parameter vorhanden sind und das devcon.exe
nicht fehlt.
Wenn kein Abrufintervall angegeben ist, wird stattdessen der Standardwert verwendet (15 Sekunden). Der Wert wird verwendet, um zu bestimmen, wie viele Sekunden zwischen den einzelnen Geräteüberprüfungen verstreichen sollen. Wenn der Wert gesenkt wird, ist die Erkennung schneller, was wiederum zu mehr Systemaufwand führt. Bevor Sie einen anderen Wert testen, testen Sie ihn mit dem Standardwert und sehen Sie, wie er funktioniert. In jedem Fall würde ich nicht empfehlen, unter 10 Sekunden zu gehen.
Das Batch-Skript erfordert generische Geräte-IDs, die das folgende Format verwenden:
XXX\VID_YYYY&PID_ZZZZ
XXX
ist die Geräteklasse (z. B. USB, PCI usw.); YYYY
ist die Vendor-ID, ein eindeutiger Wert, der Hardware-Herstellern zugewiesen wird. ZZZZ ist die Produkt-ID, die das Gerätemodell identifiziert.
Wenn Sie beispielsweise eine Geräte-ID wie folgt erhalten:
USB\VID_1D4D&PID_1002&REV_0039&MI_00
Die generische ID wäre:
USB\VID_1D4D&PID_1002
Nach der Prüfung, ob das Auslösergerät (externe Webcam) angeschlossen ist, deaktiviert oder aktiviert das Skript das Zielgerät (integrierte Webcam), sofern es nicht bereits deaktiviert ist.
Planen Sie es ein
Jetzt müssen wir nur noch das Batch-Skript beim Anmelden automatisch starten.
- Öffnen Sie den Taskplaner (
taskschd.msc
) und klicken Sie auf Aktion> Aufgabe erstellen . - Nennen Sie es
WebcamCheck
. - Klicken Sie auf der Registerkarte Allgemein auf Benutzer oder Gruppe ändern .
- Geben Sie
system
in das Textfeld ein, klicken Sie auf Namen überprüfen und klicken Sie dann auf OK . - Aktivieren Sie die Option Mit höchsten Berechtigungen ausführen.
- Ändern Sie den Wert für Konfigurieren für Windows 7, Windows Server 2008 R2 .
- Wählen Sie die Registerkarte Trigger und klicken Sie auf Neu .
- Ändern Sie den Task Beginnen in Bei Anmeldung und drücken Sie OK .
- Wechseln Sie zur Registerkarte Aktionen und klicken Sie auf Neu .
- Geben Sie
"X:\Path\to\WebcamCheck.cmd"
in der Programm / Skript Textbox, es mit dem tatsächlichen Dateipfad zu ersetzen. - Geben Sie
"XXX\VID_YYYY&PID_ZZZZ" "AAA\VID_BBBB&PID_CCCC"
im Textfeld Argumente hinzufügen die Geräte-IDs durch die richtigen Werte ein. - Klicken Sie auf die Registerkarte Bedingungen und deaktivieren Sie das Kontrollkästchen Task nur starten, wenn der Computer mit Strom versorgt wird .
- Wählen Sie die Registerkarte Einstellungen aus, und deaktivieren Sie sowohl die Aufgabe Ausführen der Aufgabe bei Bedarf als auch Stoppen der Aufgabe, wenn sie länger als Felder ausgeführt wird.
- Aktivieren Sie die Task "Ausführen" so bald wie möglich, nachdem ein geplanter Start verfehlt wurde .
- Behalten Sie für alle anderen Einstellungen die Standardwerte bei und drücken Sie OK .
Hinweis Wenn Sie möchten, dass die integrierte Webcam so schnell wie möglich deaktiviert wird, schließen Sie die externe an, bevor Sie sich anmelden.
Aktualisieren
Hier ist eine vereinfachte Version des Batch-Skripts, das die externe Kamera nur beim Start überprüft und dann beendet:
@echo off REM ensure there at least 2 parameters if "%~2" == "" exit /b 2 REM verify devcon.exe is not missing cd /d "%~dp0" if not exist devcon.exe exit /b 3 :check for /f "tokens=1 delims=\" %%G in ("%~2") do (devcon.exe find *%%G* | findstr /i /c:"%~2" >nul) goto :check%errorlevel% :check0 devcon.exe status "%~1" | findstr /i /c:"disabled" >nul if %errorlevel% == 1 (devcon.exe disable "%~1") exit /b :check1 devcon.exe status "%~1" | findstr /i /c:"disabled" >nul if %errorlevel% == 0 (devcon.exe enable "%~1") exit /b