시스템에있는 다양한 모니터 (및 해당 어댑터)에 대한 정보를 검색하려고합니다. 지금까지, EnumDisplayDevices
을 사용하여 모든 모니터를 나열하려고 시도한 결과 두 가지가 발견되었습니다. 첫 번째는 "\\.\DISPLAY1\Monitor0"
(두 번째는 각각 2와 1이지만이 질문과 관련이 없습니다). 어쨌든, 나는 위와 같이 모니터 이름을 전달하면서 EnumDisplaySettingsEx
을 호출하려고 시도했지만 항상 실패합니다. null 이름 매개 변수를 사용하는 호출은 성공하지만 DEVMODE
구조가 반환되면 dmDeviceName
은 "cdd"라고 말하면서 내가 정확하다고 의심합니다. 내가 도대체 뭘 잘못하고있는 겁니까?p/invoke 및 EnumDisplaySettingsEx의 어려움
아, 그리고 EnumDisplaySettings
(Ex가 아닌 것)을 사용해 보았는데 null name 매개 변수로도 작동하지 않습니다.
P/호출 서명 (예의 약간은 일을 얻을 수있는 떨고 시도 pinvoke.net에 하나 수정) :
[DllImport("user32.dll")]
public static extern bool EnumDisplaySettings(string deviceName, int modeNum, ref DEVMODE devMode);
[DllImport("user32.dll", CharSet = CharSet.Ansi)]
public static extern bool EnumDisplaySettingsEx([MarshalAs(UnmanagedType.LPStr)]string lpszDeviceName, int iModeNum, ref DEVMODE lpDevMode, EdsDwFlags dwFlags);
DEVMODE
는 http://www.pinvoke.net/default.aspx/Structures/DEVMODE.html에서 정의된다. 현재 EdsDwFlags
은 항상 0입니다. iModeNum
은 -1입니다 (현재 설정의 경우).
그리고 StackOverflow는이 게시물에 C# 태그를 첨부 할 수 없습니다.