В связи с особенностями работы монитора при подключении второго источника изображения при активном первом, написал небольшую программку, которая посылает сообщение, прекращающее выдачу видеосигнала на дисплей. Сообщение идентично тому, что посылается при отключении дисплея в режиме PowerSaving.

За все отвечает системное сообщение WM_SYSCOMMAND с параметрами SC_MONITORPOWER и 2. LPARAM со значением 2 соответствует отключению дисплея. Значение параметра -1 – включает дисплей, 1 – вводит дисплей в режим Stand By (в основном актуально для ноутбуков).

Код получился крайне незамысловатый:

static class Program
{
    [DllImport("user32.dll")]
    static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);
 
    static IntPtr SC_MONITORPOWER = new IntPtr(0xF170);
    const uint WM_SYSCOMMAND = 0x0112;
    static IntPtr MONITOR_OFF = new IntPtr(2);
    static IntPtr HWND_BROADCAST = new IntPtr(0xffff);
 
    [STAThread]
    static void Main()
    {
        SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, MONITOR_OFF);
    }
}


Оставить комментарий

Please input following word "8GAF8" from RIGHT to LEFT:

- this is neccessary(spam filter).