spais
Гл. Модератор
- Регистрация
- 4 Июн 2018
- Сообщения
- 37
- Реакции
- 102
Итак, эта программа убавляет яркость по наступлению вечера.
Данная программа будет дорабатываться , просьба для самых глазастых - скидывайте свои баги, глюки, недоработки.
(для работы уберите у картинки нужного цвета букву после цифры и поместите рядом с .ехе файлом программы)
Данная программа будет дорабатываться , просьба для самых глазастых - скидывайте свои баги, глюки, недоработки.
C++:
#include <windows.h> //Для WinMain и диалогов
#include <tchar.h> // Шо бы все корректо работало
#define NIGHT "1.ico" //Макросы картинок
#define DAY "2.ico"
NOTIFYICONDATA Icon = { 0 }; //переменная иконки
void SetBrightness(HDC hDC, int wBrightness) //изменение яркости
{
BOOL bReturn = FALSE;
HDC hGammaDC = hDC;
if (hDC == NULL) //Если данных нет, то мы их берем
{
hGammaDC = GetDC(NULL);
}
if (hGammaDC != NULL) // лень писать
{
WORD GammaArray[3][256];
for (int iIndex = 0; iIndex < 256; iIndex++)
{
int iArrayValue = iIndex * (wBrightness + 128);
if (iArrayValue > 65535)
{
iArrayValue = 65535;
}
GammaArray[0][iIndex] =
GammaArray[1][iIndex] =
GammaArray[2][iIndex] = (WORD)iArrayValue;
}
bReturn = SetDeviceGammaRamp(hGammaDC, GammaArray);
}
if (hDC == NULL)
{
ReleaseDC(NULL, hGammaDC);
}
}
LRESULT CALLBACK WndProc(HWND window, UINT message, WPARAM wParam, LPARAM lParam) //Закрытие программы по нажатию пкм по иконке
{
switch (message)
{
case WM_USER:
if (lParam == WM_RBUTTONDOWN)
if (MessageBox(NULL, TEXT("Завершить работу?"), TEXT("Ы"), MB_YESNO) == IDYES)
DestroyWindow(window);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(window, message, wParam, lParam);
}
return 0;
}
int APIENTRY _tWinMain(HINSTANCE instance, HINSTANCE, LPTSTR, int) //Начало
{
SYSTEMTIME time; //Берем время(что бы прибавлять или убавлять яркость)
GetLocalTime(&time);
WNDCLASSEX main = { 0 }; //Создание окна
main.cbSize = sizeof(WNDCLASSEX);
main.hInstance = instance;
main.lpszClassName = TEXT("Main");
main.lpfnWndProc = WndProc;
RegisterClassEx(&main);
//Создание окна
HWND window = CreateWindowEx(0, TEXT("Main"), NULL, 0, 0, 0, 0, 0, NULL, NULL, instance, NULL);
//Создание иконки
Icon.cbSize = sizeof(NOTIFYICONDATA);
Icon.hWnd = window;
Icon.uVersion = NOTIFYICON_VERSION;
Icon.uCallbackMessage = WM_USER;
//Если вечер то ставим иконку луны и сбавляем яркость
if (time.wHour >= 18 || time.wHour <= 6)
{
SetBrightness(NULL, 100);
Icon.hIcon = (HICON)LoadImage(NULL, TEXT(NIGHT), IMAGE_ICON, 512, 512, LR_LOADFROMFILE);
}
//Если день то иконку солнца
else
Icon.hIcon = (HICON)LoadImage(NULL, TEXT(DAY), IMAGE_ICON, 512, 512, LR_LOADFROMFILE);
Icon.uFlags = NIF_MESSAGE | NIF_ICON;
Shell_NotifyIcon(NIM_ADD, &Icon);
MSG message;
//цикл пока мы не завершим программу нажав пкм
while (GetMessage(&message, NULL, 0, 0))
{
TranslateMessage(&message);
DispatchMessage(&message);
}
SetBrightness(NULL, 128);//восстанавливаем яркость
Shell_NotifyIcon(NIM_DELETE, &Icon);//удаляем иконку
return 0;
}
//конец
Пожалуйста войдите или зарегистрируйтесь чтобы просматривать скрытый текст.