Таким образом, я пытаюсь получить правильный контекст устройства, чтобы я мог установить гамму на отдельных мониторах в конфигурации N мониторов (2+).
Я пробовал
[DllImport("gdi32.dll")]
static extern IntPtr CreateDC(string lpszDriver, string lpszDevice, string lpszOutput, IntPtr lpInitData);
С помощью этого метода я использую строку «DISPLAY» для lpszDriver, я перечисляю отображения с помощью другого метода pInvoke и получаю имя устройства отображения, которое в итоге выглядит как «\ Registry \ Machine \ System \ CurrentControlSet \ Control \ Class {4d36e96e-e325-11ce-bfc1-08002be10318} \ 0042 "и передается как lpszDevice. Значение lpszOutput равно нулю, а lpInitData равно IntPtr.Zero. Возвращаемый hDC работает, но кажется глобальным.
и
[DllImport("user32.dll")]
public static extern IntPtr GetDC(IntPtr hWnd);
С помощью этого метода я попытался использовать настоящий дескриптор формы окна.
Я использую
[DllImport("gdi32.dll")]
private static extern int SetDeviceGammaRamp(IntPtr hDC, ref RAMP lpRamp);
Он устанавливает гамма-шкалу, но он всегда устанавливает оба монитора.
Есть идеи?