Отключение монитора с помощью JNA в Java не работает должным образом - PullRequest
0 голосов
/ 03 марта 2019

Используя этот пример отключения монитора с помощью JNA Я столкнулся со следующей проблемой: Монитор выключается, как и ожидалось, но сразу же включается через секунду.Даже если я закомментирую часть со сном и включением монитора.Все то же самое.

Я думал, что монитор включается, когда управление возвращается в основной поток.Но это не так.Запуск этого фрагмента в новом потоке приводит к тому же результату.

Также я попробовал скрипт powershell, выполняющий ту же самую вещь, и он работает как шарм.Но не фрагмент Java.

Что я делаю не так?Или что не так с этим вообще.

1 Ответ

0 голосов
/ 04 марта 2019

Возможно, что "не работает должным образом" означает, что ваши ожидания неверны.

Обратите внимание, что есть некоторые проблемы с связанным кодом , который, как я полагаю, вы использовали дословно,Функция SendMessage отображается дважды.Первое отображение корректно, но никогда не используется:

  LRESULT SendMessageA(HWND paramHWND, int paramInt, WPARAM paramWPARAM,
        LPARAM paramLPARAM);

Второе отображение заменяет int на WPARAM, и меня не удивит, если некоторые результаты здесь будут необычными, особенно на 64система / JVM.Это версия, которая называется в коде.

  LRESULT SendMessageA(HWND paramHWND, int paramInt, int paramInt2,
        LPARAM paramLPARAM);

Несмотря на это, код работает должным образом, он активирует функции управления питанием , чтобы выключить монитор!Проблема с вашими ожиданиями заключается в том, что вы не продумали, что может снова включить монитор.Перемещение или щелчок мыши (или, возможно, отпускание нажатой кнопки мыши), нажатие (или отпускание) клавиши, сетевая активность или множество других вещей могут генерировать системные события , которые сигнализируют о функции энергосбережения для возврата монитора назад.на .(Вы, вероятно, увидите те же результаты из фрагмента PowerShell; возможно, в этом случае ваша последовательность щелчков мышью / нажатий клавиш будет другой.)

...