2010-04-08 20 views
13

मैं विंडोज डिस्प्ले गुणों (# 1, 2 ... आदि) में दिखाए गए मॉनीटर आईडी को पुनर्प्राप्त करने का प्रयास कर रहा हूं, लेकिन मुझे कोई रास्ता नहीं दिख रहा है। मैंने EnumDisplayMonitors के साथ-साथ EnumDisplayDevices का उपयोग करने का प्रयास किया है। वे दोनों "\। \ DISPLAY1" जैसे कुछ लौटते हैं। हालांकि, यह संख्या हमेशा विंडोज द्वारा दिखाए गए नंबर से मेल नहीं खाती है, खासकर जब 2 या अधिक मॉनीटर चलाने के लिए 2 वीडियो कार्ड का उपयोग किया जा रहा है। क्या कोई एपीआई कॉल है जिसे मैं इस जानकारी को पुनः प्राप्त करने के लिए याद कर रहा हूं, या रजिस्ट्री से या कहीं और इसे पाने का कोई तरीका है? धन्यवाद!
Win32: EnumDisplayMonitors, EnumDisplayDevices:मैं मॉनिटर जानकारी कैसे प्राप्त कर सकता हूं?

मैं इन तरीकों की कोशिश की है इन वापसी पर नज़र रखता है जो सक्रिय नहीं हैं की न तो, और न तो एक ही सही आईडी देता है।
WMI: "Win32_DesktopMonitor से * चुनें * सभी मॉनीटर वापस नहीं करता है, और कोई आईडी नहीं है।
रजिस्ट्री: मुझे विभिन्न स्थानों पर मॉनीटर मिल गए हैं, मुझे मिली जगहों में से कोई भी जानकारी जो मैं ढूंढ रहा हूं।

किसी भी मदद की बहुत सराहना की जाती है। :)

अद्यतन: इन पर नजर रखने संख्या मैं देख रहा हूँ कर रहे हैं: alt text

+1

पुराना प्रश्न, कभी भी कोई जवाब मिल गया? –

+1

किसी को भी समाधान मिला है? – flashk

+1

@ जोएल बरसोट्टी, क्या आपने उस समस्या को हल किया? –

उत्तर

0

बस एक अनुमान है, लेकिन विंडोज की तरह विंडोज प्रदर्शन गुण में iDevNum+1 से पता चलता है कि यह लग रहा है।

+0

दुर्भाग्यवश यह मामला नहीं है, यह बहुत आसान होगा। :) यदि आपके पास दोहरी मॉनिटर सिस्टम है, तो # 2 को अपना प्राथमिक और अक्षम # 1 बनाने का प्रयास करें। # 2 को अभी भी डिस्प्ले प्रॉपर्टी विंडो में नंबर 2 कहा जाएगा, लेकिन यह EnumDisplayDevices (iDevNum 0) द्वारा लौटा पहला मॉनिटर होगा। :( –

+0

इसके अलावा, ऑर्डर जो मॉनिटर्स को EnumDisplayMonitors द्वारा वापस लौटाया जाता है, यादृच्छिक प्रतीत होता है। अधिकांश समय यह उन्हें उसी क्रम में वापस कर देगा, लेकिन यदि आपके पास 2 मॉनीटर चलाने वाले 2 वीडियो कार्ड हैं, तो यह लगभग बदल सकता है। –

+0

यह लीड मुझे सही पथ से नीचे, लेकिन विंडोज 7 के लिए सही नहीं है। –

1

इस उद्देश्य के आधार पर, आप ड्राइवर-आधारित समाधान की ओर देखना चाहेंगे। मुझे पता है कि एनवीडिया में कुछ सभ्य libs हैं जो आपको अधिकांश फ़ंक्शंस को नियंत्रण पैनेल तक पहुंच प्रदान करती हैं।

+0

यह एक दिलचस्प विचार है, लेकिन मुझे कुछ और सामान्य उद्देश्य चाहिए और विशिष्ट ड्राइवरों पर निर्भर नहीं हो सकता है। –

1

क्या आपने EnumDisplayDevices पर दो कॉल किए हैं? कुछ ऐसा प्रयास करें:

while (EnumDisplayDevices(0, dev, &dd, 0)) 
{ 
... 
    while (EnumDisplayDevices(dd.DeviceName, devMon, &ddMon, 0)) 
    { 
    ... 
    } 
} 
+0

मैंने यह किया है, लेकिन मॉनिटर नंबर कहां लौटाता है? –

+0

मॉनीटर नंबर से आपका क्या मतलब है? यदि उल्लिखित "devMon" है, तो devMon = 0 से शुरू करें, और आंतरिक "while" में devMon ++ बनाएं। – VitalyVal

+0

मैंने मॉनिटर नंबरों की एक तस्वीर के साथ प्रश्न अपडेट किया है जिसे मैं ढूंढ रहा हूं। –

संबंधित मुद्दे

 संबंधित मुद्दे