Désactiver automatiquement la webcam intégrée lorsqu'une connexion externe est connectée?

J'utilise mon ordinateur portable comme un bureau assez souvent, environ 75% du temps. En tant que configuration de bureau, il dispose d'un moniteur, d'un haut-parleur, d'un clavier, d'une souris et d'une webcam connectés à l'extérieur, les trois derniers sur USB.
Il est alors positionné de telle sorte que sa webcam intégrée devient inutile pour la reconnaissance du visage et les chats vidéo, mais certains des programmes que j'utilise n'offrent aucun moyen de choisir une webcam par défaut.

Je me demandais donc s'il y avait un moyen, par un utilitaire, un script ou autrement, de désactiver automatiquement la webcam intégrée lorsqu'une externe est connectée.

(J'utilise Windows 7 sur Asus Zenbook Prime UX32VD si cela contribue.)

Théorie d'abord

  • Nous devons vérifier périodiquement si la webcam externe est connectée à l'ordinateur.
  • Lorsque la webcam externe est branchée , l' intégrée doit être désactivée .
  • Ensuite, le périphérique intégré doit être activé après que la caméra externe est débranchée .

Étapes préliminaires

La solution proposée utilise des scripts par lots et des techniques de planification de tâches pour gérer tout cela. Avant de pouvoir sauter sur les morceaux juteux, nous devons faire quelques choses.

Obtenir l'utilitaire Device Console (DevCon)

DevCon est un outil de ligne de commande qui affiche des informations détaillées sur les périphériques et vous permet de rechercher et de manipuler des périphériques à partir de la ligne de commande. DevCon permet, désactive, installe, configure et supprime les périphériques sur l'ordinateur local et affiche des informations détaillées sur les périphériques sur les ordinateurs locaux et distants.

  1. Téléchargez le package .cab approprié en fonction du système d'exploitation:

    • Devcon x86 (32 bits)
    • Devcon x64 (64 bits)
  2. Ouvrez l'archive .cab et extrayez le fichier nommé fil[some letters and numbers] . Il devrait être d'environ 80 Ko.

  3. Renommez-le sur devcon.exe .

Remarque Pour activer / désactiver tout périphérique, devcon.exe doit être exécuté avec les droits d'administrateur.

Déterminez les identifiants matériels requis

Windows identifie les périphériques et les classes d'installation auxquelles ils appartiennent en utilisant un ensemble spécial d'identificateurs. Ces identifiants sont utilisés pour faire correspondre les périphériques matériels avec les pilotes de périphériques qui leur permettent de communiquer avec Windows.

Un ou plusieurs identifiants d'appareil sont attribués à un appareil par son fabricant. L'un d'entre eux, l'identification matérielle, est très spécifique, jusqu'à la marque, le modèle et même la version de firmware de l'appareil. D'autres ID d'appareil sont également attribués et sont plus génériques, les ID pouvant être affectés à d'autres appareils du fabricant compatibles à un certain niveau.

Source: Découverte des ID de matériel et des classes de configuration de périphérique pour vos périphériques

  1. Branchez la webcam externe dans.
  2. Ouvrez le Gestionnaire de périphériques ( devmgmt.msc ).
  3. Trouvez votre caméra intégrée dans la liste.
  4. Cliquez avec le bouton droit de la souris sur l'entrée pour le périphérique, puis cliquez sur Propriétés .
  5. Sélectionnez l'onglet Détails et choisissez Identités matérielles dans la liste des propriétés.
  6. Cliquez avec le bouton droit de la souris sur la première valeur affichée et copiez-la. Prenez note de la valeur quelque part.
  7. Répétez les étapes 3 à 6 pour la caméra externe.

Création du script de lot

  1. Enregistrez le code suivant en tant que WebcamCheck.cmd :

     @echo off
    
     REM s'assure d'au moins 2 paramètres
     Si "% ~ 2" == "" exit / b 2
    
     REM vérifier que devcon.exe ne manque pas
     Cd / d "% ~ dp0"
     Sinon exister devcon.exe exit / b 3
    
     REM définit l'intervalle à 15 secondes s'il n'est pas spécifié
     Si "% ~ 3" == "" (intervalle de réglage = 15) autrement (intervalle défini =% 3)
    
     :sondage
     Pour / f "tokens = 1 delims = \" %% G in ("% ~ 2") do (devcon.exe trouver * %% G * | findstr / i / c: "% ~ 2"> nul)
     Goto: vérifier% errorlevel%
    
     : Check0
     Statut devcon.exe "% ~ 1" |  Findstr / i / c: "disabled"> nul
     Si% errorlevel% == 1 (devcon.exe disable "% ~ 1")
    
     :attendez
     Timeout / t% interval% / nobreak> nul
     Goto: sondage
    
     : Check1
     Statut devcon.exe "% ~ 1" |  Findstr / i / c: "disabled"> nul
     Si% errorlevel% == 0 (devcon.exe enable "% ~ 1")
     Goto: attendez
    
  2. Copiez le fichier devcon.exe et collez dans le même répertoire que le fichier que vous venez d'enregistrer.

Comment ça marche

Le script prend trois paramètres: le premier est l' identifiant cible du périphérique (la webcam intégrée); Le second est l' ID de l'appareil de déclenchement (la webcam externe); Le troisième est l' intervalle d'interrogation (en secondes), et il est facultatif.

Au début, le script s'assurera qu'il y ait suffisamment de paramètres, et que devcon.exe ne manque pas.

Lorsqu'aucun intervalle de sondage n'est spécifié, la valeur par défaut sera utilisée à la place (15 secondes). La valeur est utilisée pour déterminer le nombre de secondes qui devraient s'écouler entre chaque contrôle de périphérique. L'abaissement de la valeur signifie que la détection est plus rapide, ce qui signifie qu'il y a plus de frais généraux du système. Avant d'essayer une valeur différente, testez-le avec l'image par défaut et voyez comment cela se passe. Quoi qu'il en soit, je ne recommanderais pas aller au-dessous de 10 secondes.

Le script de lot requiert des identifiants d'appareils génériques , qui utilisent le format suivant:

 XXX\VID_YYYY&PID_ZZZZ 

XXX est la classe de périphérique (p. Ex. USB, PCI, etc.); YYYY est l'ID du fournisseur, une valeur unique attribuée aux fabricants de matériel; ZZZZ est l'ID du produit, qui identifie le modèle de l'appareil.

Par exemple, si vous avez un ID d'appareil comme ceci:

 USB\VID_1D4D&PID_1002&REV_0039&MI_00 

L'ID générique serait:

 USB\VID_1D4D&PID_1002 

Après avoir vérifié si le périphérique de déclenchement (webcam externe) est connecté, le script désactivera ou activera le périphérique cible (webcam intégrée), à ​​moins qu'il ne soit déjà désactivé / activé.

Planification

La seule chose dont nous avons besoin maintenant consiste à faire démarrer automatiquement le script par lots lors de la connexion.

  1. Ouvrez le planificateur de tâches ( taskschd.msc ) et cliquez sur Action> Créer une tâche .
  2. Nommez-le WebcamCheck .
  3. Dans l'onglet Général , cliquez sur Modifier l'utilisateur ou le groupe .
  4. Tapez le system dans la zone de texte, cliquez sur Vérifier les noms , puis cliquez sur OK .
  5. Activez l'option Exécuter avec les privilèges les plus élevés .
  6. Modifiez la valeur Configure for Windows 7, Windows Server 2008 R2 .
  7. Sélectionnez l'onglet Déclencheurs , puis cliquez sur Nouveau .
  8. Modifiez le début de la tâche à Date de connexion , puis appuyez sur OK .
  9. Passez à l'onglet Actions , puis cliquez sur Nouveau .
  10. Tapez "X:\Path\to\WebcamCheck.cmd" dans la zone de texte Programme / script , en le remplaçant par le chemin de fichier réel.
  11. Tapez "XXX\VID_YYYY&PID_ZZZZ" "AAA\VID_BBBB&PID_CCCC" dans la zone de texte Ajouter des arguments , en remplaçant les ID de l'appareil par les valeurs appropriées.
  12. Cliquez sur l'onglet Conditions et désélectionnez Démarrer la tâche uniquement si l'ordinateur est sous tension .
  13. Sélectionnez l'onglet Paramètres et décochez la tâche Autoriser à exécuter à la demande et Arrêtez la tâche si elle s'exécute plus longtemps que les champs.
  14. Activez la tâche Exécuter dès que possible après une option de début programmé manqué .
  15. Laissez tous les autres paramètres aux valeurs par défaut et appuyez sur OK .

Remarque Si vous souhaitez que la webcam intégrée soit désactivée dès que possible, connectez l'externe avant de vous connecter.


Mettre à jour

Voici une version simplifiée du script batch qui vérifiera la caméra externe uniquement lors de la mise en marche, puis sortez:

 @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 

Vous pouvez essayer de désactiver la webcam via le panneau de commande ou le gestionnaire de périphérique. Cela devrait permettre à la webcam externe d'être installée et être la seule webcam en cours d'exécution. Ensuite, vous pouvez toujours activer l'appareil à nouveau.

J'espère que cela t'aides.

Vous pouvez essayer une application gratuite de logiciel freeware "WebCam On-Off v1.0", il a aussi un Cmd supporter http://www.sordum.org/8585/webcam-on-off-dont-let-your-webcam-spy-on -toi/