Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/46: Рейтинг темы: голосов - 46, средняя оценка - 4.54
0 / 0 / 0
Регистрация: 18.12.2009
Сообщений: 6

Изменение яркости экрана

18.12.2009, 05:49. Показов 9958. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!
Проблема следующая:
на ноуте стоит стандартная прога управляющая яркостью монитора посредством клавиш которая меня ну никак не устраивает... есть идея написать свою.

Вопрос:
Как узнать/изменить яркость экрана?

(если можно пример кода, додумывать буду уже сам)

заранее спасибо!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.12.2009, 05:49
Ответы с готовыми решениями:

Изменение яркости контрастности изображения. Бинаризация изображения
Товарищи программисты помогите с разработкой алкоритма для изменеие яркости контрастности изображения, а токже осуществить бинаризацию...

Изменение яркости экрана
Доброго времени суток!!! Как изменить яркость экрана? Переписал код с C++ Builder...

Уменьшение яркости экрана
Как осуществлять медленное затемнение экрана до абсолютно чёрного? Попытался сделать через это прерывание, но меняется не яркость экрана,...

9
 Аватар для radiohobbyt
192 / 190 / 15
Регистрация: 27.01.2009
Сообщений: 548
18.12.2009, 14:14
Тут была ссылка на посторонний форум
если виста, то uint32 WmiSetBrightness(
uint64 Timeout,
uint8 Brightness
);
если младше- то через драйвер монитора(как- я не знаю)
0
0 / 0 / 0
Регистрация: 18.12.2009
Сообщений: 6
18.12.2009, 21:16  [ТС]
Вот кое что нашел... но это для Visual C++

Можно ли это как нить для С++ Builder конвертировать? С возможностью создания форм, кнопок управления и т.п. может по этому примеру получится класс сделать...

На многих ноутбуках при нажатии на клавиши FN+ (кнопка со значком лампочки или солнца) на экране появляется красивое меню управления яркостью, вот как выглядит мое меню см.вложения ))


Я мало чего понимаю в программировании (NOOB но учусь,читаю,смотрю)
Миниатюры
Изменение яркости экрана  
Вложения
Тип файла: zip change_brightness.zip (11.7 Кб, 210 просмотров)
0
 Аватар для Otaka
1857 / 714 / 55
Регистрация: 11.12.2008
Сообщений: 1,019
18.12.2009, 21:35
Конечно сконвертировать можно. Обрати внимание, что в этом исходнике все пляшут вокруг функции SetDeviceGammaRamp. Там сначала ее достают из GDI32.dll потом задают необходимые значения этого самого gamma ramp. Тебе остается это все просто повторить на билдере.
0
0 / 0 / 0
Регистрация: 18.12.2009
Сообщений: 6
18.12.2009, 21:39  [ТС]
Цитата Сообщение от Otaka Посмотреть сообщение
Конечно сконвертировать можно. Обрати внимание, что в этом исходнике все пляшут вокруг функции SetDeviceGammaRamp. Там сначала ее достают из GDI32.dll потом задают необходимые значения этого самого gamma ramp. Тебе остается это все просто повторить на билдере.
Вот если бы это было для меня так просто как ты это написал

исходник я нашел здесь: http://www.nirsoft.net/vc/chan... tness.html
Там есть кое какое описание...
0
 Аватар для Otaka
1857 / 714 / 55
Регистрация: 11.12.2008
Сообщений: 1,019
18.12.2009, 21:56
Ты просто не пробовал. Оно прекрасно копипастится в билдер и работает. Пришлось, правда, больше половины удалить оттуда:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
SetBrightness(HDC hDC,int wBrightness)
{
/*
Changes the brightness of the entire screen.
This function may not work properly in some video cards.
 
The wBrightness value should be a number between 0 and 255.
128 = Обычная яркость
выше 128 = ярче
ниже 128 = темнее
If hDC is NULL, SetBrightness automatically load and release
the display device context for you.
*/
BOOL bReturn = FALSE;
HDC hGammaDC = hDC;
//Load the display device context of the entire screen if hDC is NULL.
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);
  }
 
return bReturn;
}
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
SetBrightness(NULL,64);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
SetBrightness(NULL,128);
}
//---------------------------------------------------------------------------
2
0 / 0 / 0
Регистрация: 18.12.2009
Сообщений: 6
18.12.2009, 22:05  [ТС]
Так и есть, я не пробовал.... но спасибо за пример, уже что то... сейчас буду думать как сделать это удобней и красивей... еще в фотошопе работать чтоб изображения приготовить
0
0 / 0 / 0
Регистрация: 18.12.2009
Сообщений: 6
19.12.2009, 06:12  [ТС]
Итак....

Пока что вот что получилось (см. вложения) НО есть пару вопросов:
  1. Как узнать яркость экрана и записать его во всплывающую подсказку для значка в трее
  2. Как заставить PNG изображение быть прозрачным (стекло)
  3. Как управлять яркостью клавшами Fn + F5 F6
  4. Даже если программа в трее, управление яркостью кнопками...

Исходник:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
 
#include "Bcp.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "sTrackBar"
#pragma link "sSkinManager"
#pragma link "acPNG"
#pragma link "sGauge"
#pragma link "trayicon"
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
 
 
// Code
SetBrightness(HDC hDC,int wBrightness)
{
/*
Changes the brightness of the entire screen.
This function may not work properly in some video cards.
 
The wBrightness value should be a number between 0 and 255.
128 = Обычная яркость
выше 128 = ярче
ниже 128 = темнее
If hDC is NULL, SetBrightness automatically load and release
the display device context for you.
*/
BOOL bReturn = FALSE;
HDC hGammaDC = hDC;
//Load the display device context of the entire screen if hDC is NULL.
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);
  }
 
return bReturn;
}
// Code end
 
 
void __fastcall TForm1::sTrackBar1Change(TObject *Sender)
{
 sGauge1 -> Progress = sTrackBar1 -> Position;
 SetBrightness(NULL,sTrackBar1 -> Position);
}
 
void __fastcall TForm1::N1Click(TObject *Sender)
{
         TrayIcon1 -> Visible = true;
         Form1->TrayIcon1->Minimize();        
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N6Click(TObject *Sender)
{
         TrayIcon1 -> Visible = false;
         Form1->TrayIcon1->Restore();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N3Click(TObject *Sender)
{
// Help file include
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N4Click(TObject *Sender)
{
 // About form include       
}
 
//---------------------------------------------------------------------------
void __fastcall TForm1::N5Click(TObject *Sender)
{
        Form1->Close();        
}
//---------------------------------------------------------------------------
Изображения
 
0
 Аватар для Otaka
1857 / 714 / 55
Регистрация: 11.12.2008
Сообщений: 1,019
19.12.2009, 18:39
В том примере что ты дал есть GetDeviceGammaRamp, ты должен использовать её для получения яркости экрана. Делай по аналогии с SetBrightness, только наоборот.
Для отлова нажатия кнопок даже если программа висит в трее используй RegisterHotKey(подробности на MSDN).
1
0 / 0 / 0
Регистрация: 18.12.2009
Сообщений: 6
20.12.2009, 06:17  [ТС]
Цитата Сообщение от Otaka Посмотреть сообщение
В том примере что ты дал есть GetDeviceGammaRamp, ты должен использовать её для получения яркости экрана. Делай по аналогии с SetBrightness, только наоборот.
Для отлова нажатия кнопок даже если программа висит в трее используй RegisterHotKey(подробности на MSDN).

Спасибо но как указать именно кнопку FN?
В следующем коде ошибка:
C++
1
2
3
4
5
RegisterHotKey(Form1->Handle,         // Handle окна, которому отправлять сообщения WM_HOTKEY
                             0x00F,                 // УСЛОВНЫЙ идентификатор горячего ключа
                             MOD_FN, // модификаторы
                             VK_F6              // код клавиши
                             );
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.12.2009, 06:17
Помогаю со студенческими работами здесь

Регулировка яркости экрана
Люди помогите как в vb.net написать регулировку яркости подсветки LCD монитора? Допустим на форме 2 кнопки +повышение яркости -...

Не отключается авторегулировка яркости экрана
купил ноут Acer E5-575G (core i5 6200U CPU) не могу отключить адаптивную зал*пу изменения в настройках схемы питания не помогает ...

Не убирается индикатор яркости с экрана
Помогите плиз!Не убирается индикатор яркости с экрана!Зависла табличка и все!На кнопки монитора не реагирует, отключал от сети не помогает!...

Пропал ползунок регулировки яркости экрана
В меню уведомлений пропал ползунок, который отвечает за яркость экрана. Обычно такое бывает при остатке батареи &gt;5%. В настройках...

Получилось включить регулировку яркости экрана
Если ты один из тех, кому повезло иметь такое счастье, то читай внимательно, что нужно делать! :) Пример на Ubuntu 13.04 с XFCE 1)...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru