如何在Windows下以編程方式禁用所連接或內置的網絡攝像頭?在Windows下以編程方式禁用網絡攝像頭
通過禁用它們,我的意思是任何程序試圖訪問該相機要麼:
- 無法訪問他們
- 能夠訪問他們,但不是視頻飼料,他們應該收到一個黑色的畫面
爲什麼我想這樣做:
我有一個攝像頭的筆記本電腦。沒有簡單的方法可以通過軟件禁用它。我想用一個禁用網絡攝像頭的按鈕來創建一個應用程序,以便任何想要使用它的應用程序都無法使用它,並且一個按鈕可以重新啓用它。我不想在身體上放置任何物體,否則我不會在這裏問這個問題。
如何在Windows下以編程方式禁用所連接或內置的網絡攝像頭?在Windows下以編程方式禁用網絡攝像頭
通過禁用它們,我的意思是任何程序試圖訪問該相機要麼:
爲什麼我想這樣做:
我有一個攝像頭的筆記本電腦。沒有簡單的方法可以通過軟件禁用它。我想用一個禁用網絡攝像頭的按鈕來創建一個應用程序,以便任何想要使用它的應用程序都無法使用它,並且一個按鈕可以重新啓用它。我不想在身體上放置任何物體,否則我不會在這裏問這個問題。
這裏是這裏有兩個環節上SO啓用/禁用設備編程:
How do I disable a system device?
Win32 API function to programmatically enable/disable device
還有一個工具,DevCon,你可以自動化。
一個簡單而有效的解決方法是對背景,其通過從活性捕獲鎖定相機(例如在最小分辨率捕獲,以Null Renderer
濾波器,或者暫停捕獲甚至會更好)的應用程序。只要您的應用程序獲得了相機的訪問權限,其他任何人都可以從中捕捉它們。
另一種解決方案,對於與其他應用程序的交互,更復雜和有點危險,是重新定義(掛接,替代)類並攔截其列舉的視頻輸入設備類別。堅持這一點,你可以隱藏攝像機,不要將其枚舉傳遞給應用程序。這裏的關鍵字是CoTreatAsClass
,這就要求您熟悉COM
。這仍然可以讓遺留應用程序通過Video for Windows API
訪問攝像頭(您可能會喜歡)。
那麼你不需要爲此編程...我相信你知道任務管理器是什麼。只需創建一個殺死網絡攝像頭進程的.bat文件(又名.exe文件)並讓另一個.bat文件將其打開回來?我的意思是,這將適用於Windows上的任何網絡攝像頭, 但如果你想以編程方式做到這一點(是這樣的話嗎?大聲笑),那麼你將不得不向我們提供什麼類型的網絡攝像頭它是這樣的信息。 。
以防萬一你不知道如何做一個bat文件:
command.com 的taskkill/IM的notepad.exe
: 中打開了一個空的.txt文件 類型並將文件保存爲anything.bat,並確保更改文件類型(位於文件名稱的下方),點擊Save as type保存爲* txt,然後選擇所有文件。
你顯然不明白這個問題是什麼。 – specializt
您可以使用DirectShow編寫應用程序,控制網絡攝像頭,防止其他應用程序訪問它。您可能必須使用C++,並且您可能需要Visual Studio 2005或更高版本。
開始通過下載的Windows SDK:
[SDK根] \樣本\多媒體\ DirectShow的\基類\ baseclasses.sln
: http://go.microsoft.com/fwlink/?LinkID=129787 在安裝SDK,打開Visual Studio並打開該解決方案後,[SDK Root]通常爲:C:\ Program Files \ Microsoft SDKs \ Windows \ v7.1
構建將創建strmbase.lib(release)或strmbasd.lib(debug)的解決方案。 構建DirectShow應用程序需要此庫。
下一頁打開AMCAP樣品在:
[SDK根] \樣本\多媒體\ DirectShow的\捕獲\ AMCAP \ amcap.sln
生成並運行AMCAP。您現在應該可以控制網絡攝像頭。您可以使用AmCap作爲您想要做什麼的基礎,或者您甚至可以根據需要修改AmCap。
希望這會有所幫助。
哪個攝像頭?網絡攝像頭,通過USB連接的照相機,錄像機也許?更加詳細一些。 – 2011-10-08 11:07:34
...以及通過禁用它們是什麼意思?您知道,即使您可以禁用設備,用戶也可以拔下插頭並重新插入,對吧? – tenfour