Альтернативное устройство ввода (Midi) не мешает хранителю экрана в приложении Winforms - PullRequest
2 голосов
/ 26 марта 2010

Я разработал приложение C # WinForms, в котором пользователь обеспечивает ввод через устройство, подключенное через MIDI. Пользователь будет работать в течение длительного времени без использования клавиатуры или мыши.

Когда я получаю сообщение MIDI, могу ли я что-нибудь сделать, чтобы «сообщить» системе, что это считается пользовательской активностью (т. Е. Нажатием клавиши). Я не хочу, чтобы экранная заставка или временные блокировки происходили, если MIDI-устройство активно используется.

Я думаю, что мой запрос отличается от других запросов, которые я видел, потому что они хотят отключить заставки на весь срок службы своего приложения, в результате чего я просто хочу, чтобы MIDI-ввод, который я получаю, считался интерактивностью пользователя.

Могу ли я позвонить, когда получу вход MIDI, чтобы показать активность пользователя системы?

Ответы [ 2 ]

2 голосов
/ 26 марта 2010

Вот проект CodeProject, который, кажется, делает это:

http://www.codeproject.com/KB/cs/ScreenSaverControl.aspx

Похоже, вы можете просто вызывать его метод SetScreenSaverTimeout(GetScreenSaverTimeout()) каждый раз, когда получаете вход MIDI.

0 голосов
/ 26 марта 2010

Windows отправляет сообщение в каждое окно перед активацией экранной заставки или монитора, все, что вам нужно сделать, чтобы предотвратить изменение экрана, - это проглотить эти сообщения.

const int WM_SYSCOMMAND = 0x0112, SC_SCREENSAVE = 0xF140, SC_MONITORPOWER = 0xF170;
protected override void WndProc(ref Message m)
{
    if( m.Msg == WM_SYSCOMMAND ) //Intercept System Command
    {
        if( m.WParam.ToInt32() == SC_SCREENSAVE || m.WParam.ToInt32() == SC_MONITORPOWER )
        { 
            //Intercept ScreenSaver and Monitor Power Messages
            //MessageBox.Show("Reached SC/PowerCondition");
            return; // 
        }
    }   
    base.WndProc(ref m);
}

Пример кода, наряду с дальнейшим чтением, взят из этого потока разработчиков fusion.

...