wyłączenie ekranu w c++

0

jak wyłączyć ekran laptopa za pomocą jeżyka c++ , chodzi o wachowne funckje c++ a potem jak włączyć , program może być konsolowy

1

Można użyć funkcji SendMessage, albo PostMessage. Wysyłają komunikat do systemu, który może ustawić różne wartości, np. właśnie zasilanie ekranu.

//Wyłączenie ekranu

    PostMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, (LPARAM)2);
//Włączenie ekranu
    PostMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, (LPARAM)-1);

Główna różnica między PostMessage a SendMessage jest to, że przy SendMessage program czeka, aż funkcja się wykona, a w przypadku PostMessage program idzie dalej. Żeby tego użyć potrzebujesz Windows.h. Przetestowałem u mnie i działało prawidłowo.
Mój kod testowy:

#include <Windows.h>
#include <iostream>
#include <chrono>
#include <thread>



int main() {

    PostMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, (LPARAM)2);


    std::this_thread::sleep_for(std::chrono::seconds(5));


    PostMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, (LPARAM)-1);

    return 0;
}

Jedyny mankament to to, że gdy ruszysz myszką, albo wciśniesz jakiś klawisz, to ekran automatycznie się wybudza.

0

wielkie dzięki za pomoc 🙂

0

WM_SYSCOMMAND message (Winuser.h) - Win32 apps | Microsoft Learn

Value Meaning
SC_MONITORPOWER 0xF170 Sets the state of the display. This command supports devices that have power-saving features, such as a battery-powered personal computer.
The lParam parameter can have the following values:
  • -1 (the display is powering on)
  • 1 (the display is going to low power)
  • 2 (the display is being shut off)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.