2014-02-12 81 views
3

我正在開發一個Windows應用程序,通過VNC支持遠程顯示。通常遠程顯示器將是唯一的可視界面。但是,有些情況下用戶會希望使用物理監視器查看應用程序。如果連接了物理連接的顯示器切換到特定輸入(可能是DVI或HDMI),我需要能夠檢測到並關閉VNC。 是否可以檢測連接的顯示器是否正在顯示某個輸入?是否可以檢測連接到Windows PC的顯示器是否正在顯示某個輸入?

我知道我可以通過Screen.AllScreens獲得有關所連接顯示器的一些信息,但其中沒有任何內容似乎與我需要的完全一致。有沒有可能通過Windows API公開的某種方法可以給我這些信息?可以從VESA/DDC確定必要的信息嗎?

回答

2

我沒有任何開發VNC應用程序的經驗,但是也許一個建議可能會讓你在正確的道路上開始。

下載wmiexplorer

  1. 運行程序
  2. 在這裏,您可以在資源管理器WMI不同類別,這將是最低的水平,我認爲你會得到
  3. 轉到查詢標籤,輸入查詢:"select * from Win32_DesktopMonitor"

我認爲這是您可以用來找出有關您的顯示器的信息的信息。 (我不確定哪些分類有關於顯示器的信息)

特別是,請查看Availability以瞭解Win32_DesktopMonitor類。

更新

運行在遠程機器上的描述和的DeviceID和名稱回來作爲此查詢「默認顯示器」。在我的真機上,它回來的時候是「Generic PnP Monitor」,並且有一個MonitorManufacturer設置,遠程機器沒有。您甚至可以將查詢的顯示器與Screen分辨率進行比較,也可以將查詢返回的SystemName與運行應用程序的計算機的系統名稱進行比較。使用ManagementObjectSearcher執行WMI查詢。

你也不要像示例設備的映射/交叉檢查顯示here

編輯一樣。注意MonitorDesktop和PnPEntity之間的ClassGUID是相同的。

相關問題