2011-10-08 40 views
2

如何在Windows下以編程方式禁用所連接或內置的網絡攝像頭?在Windows下以編程方式禁用網絡攝像頭

通過禁用它們,我的意思是任何程序試圖訪問該相機要麼:

  • 無法訪問他們
  • 能夠訪問他們,但不是視頻飼料,他們應該收到一個黑色的畫面

爲什麼我想這樣做:

我有一個攝像頭的筆記本電腦。沒有簡單的方法可以通過軟件禁用它。我想用一個禁用網絡攝像頭的按鈕來創建一個應用程序,以便任何想要使用它的應用程序都無法使用它,並且一個按鈕可以重新啓用它。我不想在身體上放置任何物體,否則我不會在這裏問這個問題。

+0

哪個攝像頭?網絡攝像頭,通過USB連接的照相機,錄像機也許?更加詳細一些。 – 2011-10-08 11:07:34

+0

...以及通過禁用它們是什麼意思?您知道,即使您可以禁用設備,用戶也可以拔下插頭並重新插入,對吧? – tenfour

回答

0

阻止用戶訪問連接到系統的攝像頭的唯一方法是卸載它的驅動程序。這將是一個極端不友好事情要做!

如果您想阻止您的應用程序中使用系統設備,那麼您只需從顯示給用戶的可用設備列表中刪除違規設備即可。

問:你爲什麼要這樣做?

+0

我有一臺帶攝像頭的筆記本電腦。沒有簡單的方法來禁用它。我想用一個禁用網絡攝像頭的按鈕來創建一個應用程序,以便任何想要使用它的應用程序都無法使用它,並且一個按鈕可以重新啓用它。 – rid

+3

拉杜,用蓋子蓋住鏡頭。這可能是最簡單的方法。 – Joey

+0

@Joey +1,黑色膠帶或一張貼子也可以。 –

1
  1. 一個簡單而有效的解決方法是對背景,其通過從活性捕獲鎖定相機(例如在最小分辨率捕獲,以Null Renderer濾波器,或者暫停捕獲甚至會更好)的應用程序。只要您的應用程序獲得了相機的訪問權限,其他任何人都可以從中捕捉它們。

  2. 另一種解決方案,對於與其他應用程序的交互,更復雜和有點危險,是重新定義(掛接,替代)類並攔截其列舉的視頻輸入設備類別。堅持這一點,你可以隱藏攝像機,不要將其枚舉傳遞給應用程序。這裏的關鍵字是CoTreatAsClass,這就要求您熟悉COM。這仍然可以讓遺留應用程序通過Video for Windows API訪問攝像頭(您可能會喜歡)。

-1

那麼你不需要爲此編程...我相信你知道任務管理器是什麼。只需創建一個殺死網絡攝像頭進程的.bat文件(又名.exe文件)並讓另一個.bat文件將其打開回來?我的意思是,這將適用於Windows上的任何網絡攝像頭, 但如果你想以編程方式做到這一點(是這樣的話嗎?大聲笑),那麼你將不得不向我們提供什麼類型的網絡攝像頭它是這樣的信息。 。

以防萬一你不知道如何做一個bat文件:

command.com 的taskkill/IM的notepad.exe

: 中打開了一個空的.txt文件 類型並將文件保存爲anything.bat,並確保更改文件類型(位於文件名稱的下方),點擊Save as type保存爲* txt,然後選擇所有文件。

+0

你顯然不明白這個問題是什麼。 – specializt

1

您可以使用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。

希望這會有所幫助。