我們正在編寫一個程序,該程序必須能夠將設置推送到特定的顯示器,並要求我們爲每個顯示設備設置唯一的標識符。到目前爲止,我能得到的最好的結果是查詢由EnumDisplayDevices返回的DEVMODE結構的句柄,並查看返回的DISPLAY_DEVICE名稱是否包含「DISPLAY1」或「DISPLAY2」(我們只支持兩個監視器,並且該設備名稱DISPLAY_DEVICE結構體的字段的形式是\。\ DISPLAYx,其中x是自然數,最小值爲1)。窗口如何分配顯示設備名稱? (如\。 DISPLAY1)並確定顯示端口?
我的問題是,如果有人將設置從一個終端應用到另一個終端並實際上說:「將DISPLAY1中的所有設置和我的DISPLAY2中的所有設置應用於其他終端的DISPLAY1和DISPLAY2」它將設置應用於連接到相應端口的監視器?據我所知,如果只連接了1臺監視器,則該監視器將被分配名稱\。\ DISPLAY1,如果連接了兩個,則通過DVI連接的顯示設備是\。\ DISPLAY1,VGA上的設備是\。\ DISPLAY2。
我試過一次拔下一個顯示器,以不同的順序重新連接它們,重新啓動,只有一個連接重新啓動,然後連接第二個等等,而且它似乎總是以這種方式分配它們。我似乎無法將它們分配給相反的名字。如果是這種情況,那麼我們應該沒問題。
或者,如果有人知道使用MSDN調用以編程方式確定顯示器連接到哪個端口(DVI或VGA等),那將更有幫助。基本上我已經用盡了所有可以解決這個問題的方法。
基本上,我問,我是否正確地假設了Windows 7如何爲顯示器分配名稱?如果不是,它是如何完成的?有沒有辦法改變它?如果是這樣,怎麼樣?有沒有辦法確定監視器連接的端口?
順便說一句,這個應用程序是使用Qt編寫的,如果這很重要的話。
謝謝。
-Alex又名LeapDayWilliam
我覺得這很有趣,沒有關於這方面的文檔,也沒有人似乎知道答案,但我很欣賞所有的觀點。 – LeapDayWilliam 2012-03-23 14:27:36