2013-01-31 23 views
0

모니터에서 직접 을 추출하려고 시도하는이프로젝트가 있습니다. 목표는 어떤 드라이버도 설치하지 않고 에서 실행할 수있는 응용 프로그램을 만드는 것입니다. 등록 데이터베이스 또는 으로 정보를 가져 오는 것이 가능하다는 것을 알고 있지만 드라이버가 설치되지 않은 상태에서 정확한 정보를 제공하지 않기 때문에이 프로젝트에서는 불가능합니다. 우리는 작동하는이 부착 된 코드를 가지고 있지만, 우리가 설치를 시도 할 때 작동하지 않기 때문에 드라이버에 해상도를 묻는 것 같아요. 여기모니터에서 직접 EDID 읽기 NO 드라이버

[DllImport("user32.dll")] 
[return: MarshalAs(UnmanagedType.Bool)] 
private static extern bool EnumDisplaySettings([MarshalAs(UnmanagedType.LPStr)] string lpszDeviceName, int iModeNum, out Program.DEVMODE lpDevMode); 
public static List<Tuple<int, int>> GetScreenResolutions() 
{ 
    List<Tuple<int, int>> list = new List<Tuple<int, int>>(); 
    try 
    { 
     int num = 0; 
     Program.DEVMODE dEVMODE; 
     while (Program.EnumDisplaySettings(null, num++, out dEVMODE)) 
     { 
      Tuple<int, int> item = Tuple.Create<int, int>(dEVMODE.dmPelsWidth, dEVMODE.dmPelsHeight); 
      if (!list.Contains(item)) 
      { 
       list.Add(item); 
      } 
     } 
    } 
    catch 
    { 
     Console.WriteLine("Could not get screen resolutions."); 
    } 
    return list; 
} 

답변

1

당신은 native SetupAPI에 호출/P를해야 할 수도 있습니다 .. 드라이버가 설치되어있는 경우, 해상도를 표시 할 수있는 코드입니다. 그래도 winpe에서 링크의 코드를 테스트하지 않았습니다.

+0

나는 지금까지 성공하지 못한 EDID를 읽기 위해 레지스트리를 사용하는 예제를 볼 수있다. –

+0

직접 레지스트리를 검색 했습니까? 정확한 레지스트리 경로는 시스템마다 크게 다르며 SetupAPI는 올바른 방식으로 올바른 레지스트리 경로를 검색합니다. –

+0

SetupAPI를 사용하여 레지스트리 경로를 찾았지만 WinPE를 다룰 때 드라이버가 정보를 제공하지 않기 때문에 레지스트리에서 유용한 정보를 얻을 수 없습니다. –