1 (изменено: serzh82saratov, 2018-05-15 01:51:16)

Тема: AHK: Управление монитором, DDC/CI

Есть утилиты для управления настройками монитора, местами пишут что возможно переключать (что и требуется в первую очередь) доступные из меню профили (яркость, гамма, контраст и.т.д.).
На офф форуме тоже немного есть по теме DDC/CI. Кто сталкивался?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

2

Re: AHK: Управление монитором, DDC/CI

Я не сталкивался, но используя готовый код по получению-изменению яркости можно изменять и другие настройки.
https://autohotkey.com/boards/viewtopic … 762#p45762
https://autohotkey.com/board/topic/9688 … ut-source/

3 (изменено: serzh82saratov, 2018-05-15 17:56:11)

Re: AHK: Управление монитором, DDC/CI

Спасибо, у немцев пример не видел. Добавил себе ещё контраст, уже можно задавать свои профили.
Так понимаю это всё что есть в этом интерфейсе?
Вроде как то можно получать ещё фичи самого монитора, глубина чёрного, игровой режим, гамма, громкость.
Может RequestAndCapabilitiesReply получает возможности монитора, и их как то можно использовать для запросов.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

4

Re: AHK: Управление монитором, DDC/CI

Насчет CapabilitiesRequestAndCapabilitiesReply не знаю, но по второй ссылке автор запускает GetVCPFeatureAndVCPFeatureReply с данными по этой ссылке:
http://jaffar.cs.msu.su/oleg/ddcci/
А полную спецификацию VESA Monitor Control Command Set Standard я нашел тут:
https://milek7.pl/ddcbacklight/mccs.pdf

5

Re: AHK: Управление монитором, DDC/CI

Теперь ясно, вообщем весь стандартный интерфейс, с фичами конкретного монитора будет тёмный лес.
High-Level Functions это как бы несколько функций винапи делающих тоже самое, что может GetVCPFeatureAndVCPFeatureReply.
Но не понял как они возвращают минимальные значения, если GetVCPFeatureAndVCPFeatureReply возвращает только текущее и максимальное.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

6

Re: AHK: Управление монитором, DDC/CI

На простом не получается, как выключить монитор.

Linux DDC/CI Tool page
Control 0xe1: +/1/1 [SAM: Power control (0 - off/1 - on)]
0xe1 SAM: Power control Sniffed (0 - off/1 - on)


SetVCP("0xe1", "0x0")


getMonitorHandle() { 
	HMON := DllCall("User32.dll\MonitorFromWindow", "Ptr", 0, "UInt", 0x02, "UPtr")
	DllCall("Dxva2.dll\GetNumberOfPhysicalMonitorsFromHMONITOR", "Ptr", HMON, "UIntP", PhysMons, "UInt") 
	VarSetCapacity(PHYS_MONITORS, (A_PtrSize + 256) * PhysMons, 0) ; PHYSICAL_MONITORS
	DllCall("Dxva2.dll\GetPhysicalMonitorsFromHMONITOR", "Ptr", HMON, "UInt", PhysMons, "Ptr", &PHYS_MONITORS, "UInt")
	HPMON := NumGet(PHYS_MONITORS, 0, "UPtr") 
	return  HPMON 
}

destroyMonitorHandle(handle) {
	DllCall("dxva2\DestroyPhysicalMonitor", "Ptr", handle) 
}

SetVCP(key, val) {
	handle := getMonitorHandle()
	DllCall("dxva2\SetVCPFeature"
	, "int", handle
	, "char", key
	, "uint", val)
	destroyMonitorHandle(handle)
}  

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

7

Re: AHK: Управление монитором, DDC/CI

SetVCP("0xd6", "0x4")

Нашёл, VESA стр70.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

8

Re: AHK: Управление монитором, DDC/CI

Надо же, целая куча функций для управления монитором, а я всё в кнопки тыркаю. "Чего тут думать, трясти надо!" (с)

9

Re: AHK: Управление монитором, DDC/CI

Во, во!
Я тоже был удивлён, а оно уже давно есть.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

10

Re: AHK: Управление монитором, DDC/CI

Никак не пойму как дойти именно до функций конкретного монитора, например в VESA не нашёл black boost (усиление чёрного).

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

11

Re: AHK: Управление монитором, DDC/CI

Попробуй через softMCCS посмотреть.
http://www.ddc-ci.com/

12

Re: AHK: Управление монитором, DDC/CI

Ничего не выудил. А ты что то пробовал?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

13 (изменено: Malcev, 2018-05-22 21:53:44)

Re: AHK: Управление монитором, DDC/CI

У меня в мониторе нету black boost.
Программа  при запуске выдает разные Manufacturer reserved code, которые запускать я не хочу, чтобы не сбить настройки.

14

Re: AHK: Управление монитором, DDC/CI

serzh82saratov
Подскажите пожалуйста, есть монитор Samsung T220 и телевизор Samsung, возможно ли выключать только монитор, когда смотришь кино? Рабочий стол просто растянут, т.к. разные разрешения у дисплеев.

15

Re: AHK: Управление монитором, DDC/CI

Zak пишет:

Рабочий стол просто растянут, т.к. разные разрешения у дисплеев.

В смысле - Расширенный, на каждом своё разрешение?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

16

Re: AHK: Управление монитором, DDC/CI

serzh82saratov
Да, 1680x1050 и 1920x1080, поэтому дублировать не получится. Но вот можно ли отключать только монитор, т.к. по таймеру энергопитания, они естественно отключаются оба, а на телевизоре ещё и плавает надпись "Нет сигнала".

17

Re: AHK: Управление монитором, DDC/CI

http://forum.script-coding.com/viewtopi … 932#p72932

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

18

Re: AHK: Управление монитором, DDC/CI

serzh82saratov
А как оно работает? Как потом включить монитор? Мне использовать этот код?

Run DisplaySwitch.exe /internal ; первый монитор

19

Re: AHK: Управление монитором, DDC/CI

Почему бы не попробовать?



Run DisplaySwitch.exe /external ; второй монитор
Sleep  3000
Run DisplaySwitch.exe /internal ; первый монитор

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui
+ Zak

20 (изменено: Zak, 2019-01-12 21:15:29)

Re: AHK: Управление монитором, DDC/CI

serzh82saratov
Боюсь отключу все дисплеи и придётся хард-ресетить. Рискну.)

21 (изменено: Zak, 2019-01-12 21:31:07)

Re: AHK: Управление монитором, DDC/CI

serzh82saratov
Попробовал, всё правильно, оказывается он полностью отключает монитор, я то хотел "гасить". Пишу с телевизора.)

По сути, он просто меняет параметр "Несколько дисплеев: Расширить эти экраны" на "Несколько дисплеев: Отобразить рабочий стол только на 1". Для частого просмотра кино не очень удобно, но видимо просто "гасить" один монитор невозможно.

Run DisplaySwitch.exe /internal ; первый монитор

22 (изменено: serzh82saratov, 2019-01-12 22:12:39)

Re: AHK: Управление монитором, DDC/CI

Значит выключить питание.


SetVCP("0xd6", "0x4")  ;	display off
Sleep  3000
SetVCP("0xd6", "0x1")  ;	display on

getMonitorHandle() { 
	HMON := DllCall("User32.dll\MonitorFromWindow", "Ptr", 0, "UInt", 0x02, "UPtr")
	DllCall("Dxva2.dll\GetNumberOfPhysicalMonitorsFromHMONITOR", "Ptr", HMON, "UIntP", PhysMons, "UInt") 
	VarSetCapacity(PHYS_MONITORS, (A_PtrSize + 256) * PhysMons, 0) ; PHYSICAL_MONITORS
	DllCall("Dxva2.dll\GetPhysicalMonitorsFromHMONITOR", "Ptr", HMON, "UInt", PhysMons, "Ptr", &PHYS_MONITORS, "UInt")
	HPMON := NumGet(PHYS_MONITORS, 0, "UPtr") 
	return  HPMON 
}

destroyMonitorHandle(handle) {
	DllCall("dxva2\DestroyPhysicalMonitor", "Ptr", handle) 
}

SetVCP(key, val) {
	handle := getMonitorHandle()
	DllCall("dxva2\SetVCPFeature"
	, "int", handle
	, "char", key
	, "uint", val)
	destroyMonitorHandle(handle)
}  
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

23 (изменено: Zak, 2019-01-12 22:20:38)

Re: AHK: Управление монитором, DDC/CI

serzh82saratov
Класс, работает! Я поэтому и заинтересовался, т.к. понял, что Вы нашли внутренние команды для мониторов. Спасибо большое!

24 (изменено: serzh82saratov, 2019-01-12 23:20:45)

Re: AHK: Управление монитором, DDC/CI

Никто не пробовал получить MonitorManufacturer (самсунг такая то модель) из имени (\\.\DISPLAY1) или хэндла монитора. Код ниже у меня выводит только один из двух мониторов, причём в не зависимости главный он или нет.


objWMIService := ComObjGet("winmgmts:{impersonationLevel=impersonate}!\\" A_ComputerName "\root\cimv2")

For objDeskMon in objWMIService.ExecQuery("Select * from CIM_DesktopMonitor")
{
	DeviceID := objDeskMon.DeviceID, PNPDeviceID := objDeskMon.PNPDeviceID, MonitorType := objDeskMon.MonitorType, MonitorManufacturer := objDeskMon.MonitorManufacturer
	Msgbox %  DeviceID "`n"  PNPDeviceID "`n" MonitorType  "`n" MonitorManufacturer
}
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

25 (изменено: Zak, 2019-01-12 23:51:11)

Re: AHK: Управление монитором, DDC/CI

Я вот нашёл аналогичный по задаче Ваш скрипт, но с заливкой монитора чёрным цветом, мне очень понравилось, как он работает с плеером MPC-BE. Можно ли, всё что касается заливки, заменить на выключение питания и включение, при перемещении обратно на левый монитор или закрытии плеера?


AHK: Заполнить монитор №1 чёрным цветом по горячей клавише


А у меня код выдаёт основной монитор, хотя он и второй в системе:

DesktopMonitor1
DISPLAY\SAM03E5\561472322&0&UID1078219
Универсальный монитор PnP
(Стандартные мониторы)