c # - Deaktivering af webcam-programmet under Windows

Indlæg af Hanne Mølgaard Plasc

Problem



Hvordan kan jeg deaktivere de vedhæftede eller indbyggede webcam (er) programmatisk under Windows?


Ved at deaktivere dem mener jeg, at ethvert program, der forsøger at få adgang til kameraerne, skal enten:



  • ikke kan få adgang til dem

  • være i stand til at få adgang til dem, men i stedet for videofeed skal de modtage et sort billede



Hvorfor vil jeg gøre det her:


Jeg har en bærbar computer med et webcam. Der er ingen nem måde at deaktivere det via software. Jeg vil oprette et program med en knap, der deaktiverer webkameraet, så enhver applikation, der vil bruge den, vil ikke kunne, og en knap for at genaktivere det. Jeg vil ikke lægge noget over kameraet fysisk, ellers ville jeg ikke stille dette spørgsmål her.

Bedste reference


Her er to links her på SO for at aktivere/deaktivere en enhed programmatisk:


Hvordan deaktiverer jeg en systemenhed?


Win32 API-funktion til at aktivere/deaktivere apparat automatisk


Der er også et værktøj, DevCon, som du kan automatisere. [8]

Andre referencer 1



  1. En simpel, men effektiv løsning er at have et program på baggrund, som låser kameraet ved aktiv optagelse fra det (f.eks. optagelse i minimal opløsning, til Null Renderer filter eller muligvis pauset optagelse ville være endnu bedre). Så længe din app fik adgang til kameraet, kunne ingen andre fange det.

  2. En anden løsning, mere kompliceret og lidt farlig som for interaktion med andre applikationer, er at omdefinere (hook, substitute) System Device Enumerator klasse og aflytte sin opgørelse af videoindgangsenhedskategori. Når du har hængt på dette, kan du skjule kameraet og ikke overføre sin opgørelse til applikationen. Søgeordet her er CoTreatAsClass og det kræver, at du er bekendt med COM. Dette vil stadig give gamle programmer adgang til kameraet via Video for Windows API (som du måske er OK med).


Andre referencer 2


Du kan skrive et program ved hjælp af DirectShow, der tager kontrol over webkameraet, hvilket forhindrer andre applikationer i at få adgang til det. Du skal nok bruge C ++, og du vil sandsynligvis bruge Visual Studio 2005 eller nyere.


Start med at downloade Windows SDK: http://go.microsoft.com/fwlink/?LinkID=129787
Når du har installeret SDK'en, skal du åbne Visual Studio og åbne løsningen på: [9]


[[SDK Root]] \ Samples \ Multimedia \ DirectShow \ baseclasses \ baseclasses.sln


[[SDK Root]] vil typisk være: C: \ Programmer \ Microsoft SDKs \ Windows \ v7.1


Bygg løsningen, som vil oprette strmbase.lib (release) eller strmbasd.lib (debug).
Dette bibliotek er nødvendigt for at opbygge en DirectShow-applikation.


Næste åbner AmCap-prøven på:


[[SDK Root]] \ Samples \ multimedia \ directshow \ capture \ amcap \ amcap.sln


Byg og kør AmCap. Du skal nu kunne styre webkameraet. Du kan bruge AmCap som grundlag for hvad du vil gøre, eller du kan endda bare kunne ændre AmCap til dine behov.


Håber dette hjælper.

Andre referencer 3


Den eneste måde, hvorpå du kan blokere en bruger fra at få adgang til et kamera, der er tilsluttet systemet, er at afinstallere driveren til det. Det ville være en ekstremt uvenlig ting at gøre !!


Hvis du vil blokere brugen af ​​en systemenhed fra din ansøgning, er alt du skal gøre, fjern den overordnede enhed fra listen over tilgængelige enheder, der vises til brugeren.


Spørgsmål: Hvorfor vil du gøre dette?

Andre referencer 4


Nå behøver du ikke programmering til dette ... Jeg er sikker på, at du er klar over, hvad opgaveadministratoren er. Bare opret en .bat-fil (aka .exe-filen), der dræber webcamprocessen ... og har en anden .bat-fil for at åbne den igen? Jeg mener dette ville arbejde for ethvert webcam på windows,
MEN hvis du ønskede at gøre det programatisk (er det ordet rigtigt? Lol) så er du nødt til at forsyne os med informationen om hvilken type webcam det er og sådan ...


og bare hvis du ikke ved hvordan man laver en flagermusfil:
Åbn en tom .txt-fil
indtaste:


command.com
taskkill/IM notepad.exe


og gem filen som anything.bat, og sørg for at ændre filtype (lige under, hvor du navngiver filen), klik på hvor det hedder Gem som type: * txt, og vælg alle filer i stedet.