Только учусь winAPI, весь вечер вчера пытался написать программу, которая бы выключала экран и включала при нажатие на клавишу F2, код ниже. Проблема в том, что при появлении окошка нажимаю на ОК и программа закрывается, не выполняя мою функцию NewWndProc, подскажите, что делать? Решил выключать экран в цикле, т.к без него экран загорается при передвижении мышкой или нажатии на клавиатуру.
КОД С++
#include <Windows.h>
#include <conio.h>
#include <winuser.h>
struct project1 {
LONG pPrevProc;
}ppjct1;
LRESULT CALLBACK NewWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
bool key = true;
while (key) {
SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, 2);
switch (uMsg) {
case WM_KEYUP:
switch (wParam) {
case VK_F2:
{
key = false;
break;
}
}
}
}
return CallWindowProc(WNDPROC(ppjct1.pPrevProc), hwnd, uMsg, wParam, lParam);
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
MessageBox(NULL, (LPCWSTR)L"Programm is started!", (LPCWSTR)L"Screen killer", MB_OK);
ppjct1.pPrevProc = SetWindowLongPtr(NULL, GWL_WNDPROC, (LONG_PTR)NewWndProc);
SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, -1);
}
Вызов SetWindowLongPtr
с NULL
в качестве первого параметра ничего не делает. Выключать монитор в цикле также бесполезно, так как он по факту будет все время включаться - выключаться. Если хотите выключать экран, то придется копать глубже и отключать его полностью.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Например, есть цикл перевода YUY2 буфера в буфер BGR (от 100 до 900+ тысяч итераций):
Как можно заменить strcpy не теряя работоспособности?
Нужно найти максимальные элементы в матрице и вывести их отдельно Код есть, но не знаю как доработать
Как при изменении значения слайдера вызывать определённый метод? Пробовал вот так, но CLion выдаёт ошибку: