Тема: AHK: Активация и деактивация второго монитора (нужна реализация).
Здравствуйте! Кто может подсказать, метод для включения\выключения второго экрана.
Заранее спасибо!
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Серый форум → Общение → AutoHotkey → AHK: Активация и деактивация второго монитора (нужна реализация).
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Здравствуйте! Кто может подсказать, метод для включения\выключения второго экрана.
Заранее спасибо!
На 7 так проще:
Run DisplaySwitch.exe /internal ; первый монитор
Run DisplaySwitch.exe /external ; второй монитор
Run DisplaySwitch.exe /extend ; Dual Wiev
Run DisplaySwitch.exe /clone ; Clone
Требуется для Windows XP и именно активация\деактивация а не переключение главного монитора и режимов...
Что вы подразумеваете под термином "активация\деактивация" ? Опишите порядок действий который вы бы хотели получить, и вам самому станет понятнее.
Что вы подразумеваете под термином "активация\деактивация" ?
Угу. Интересный вопрос...
Я прикрепил скриншот, выделил чекбокс который регулирует то, что мне нужно. Активация\Деактивация а-ля "расширить рабочий стол на этот монитор", монитор номер 2. По другому это можно объяснить как включение и выключение трансляции чего либо на второй монитор\телевизор.
Пользуюсь вторым экраном, когда мне это нужно. Хотелось бы задать горячею клавишу на выключение второго экрана, дабы работать не всегда приятно, когда курсор заходит за границы. Использовать Clone не вариант.
именно активация\деактивация а не переключение главного монитора и режимов...
Я прикрепил скриншот, выделил чекбокс который регулирует то, что мне нужно. Активация\Деактивация а-ля "расширить рабочий стол на этот монитор", монитор номер 2. По другому это можно объяснить как включение и выключение трансляции чего либо на второй монитор\телевизор.
В чём отличие от Run DisplaySwitch.exe /extend ; Dual Wiev?
В чём отличие от Run DisplaySwitch.exe /extend ; Dual Wiev?
Скорее всего никаких. Что есть "DisplaySwitch.exe"? В оригинальной системе Windows XP SP3 такого файла нет. Откуда его брать?
p.s. Видео карта ATI Radeon 9250
При нажатии Win+P что-то в ХР происходит?
В программе-драйвере ATI есть возможность задать горячую клавишу на это действие?
При нажатии Win+P что-то в ХР происходит?
Ничего не происходит...
В программе-драйвере ATI есть возможность задать горячую клавишу на это действие?
Ничего подобного я не видел. В папке с центром управления ATI, так же искал аналог DisplaySwitch.exe, ничего не нашлось. Поэтому и спрашиваю о реализации через AHK, посредством вызова какого либо системного запроса, аналогичный выполнению при (Раб.стол -> Свойства -> Параметры -> Монитор 2 -> Расширить рабочий стол на этот монитор).
Можно так: (сам не проверял)
Run, RUNDLL32.EXE shell32.dll`,Control_RunDLL desk.cpl`,`,3
WinWait, Display Properties ahk_class #32770
Send, !d2!e!a ;2 stands for second monitor
Sleep, 500
Send, !e!a
WinWait, Monitor Settings ahk_class #32770
IfWinNotActive, Monitor Settings ahk_class #32770,,,,WinActivate, Monitor Settings ahk_class #32770
WinWaitActive, Monitor Settings ahk_class #32770
Send, !y
WinWaitActive, Display Properties ahk_class #32770
WinClose, Display Properties ahk_class #32770
Либо воспользоваться программой:
http://nod5.dcmembers.com/tv_out.html
Malcev, спасибо. Программа tv_out написанная на AutoHotKey, что нужно!
Кстати, вот EnableDisplayDevice от некого superfraggle, что и была использована в программе tv_out. Функция позволяет управлять вкл\выкл мониторами, причём как я понял не сохраняя настроек в системе (на ваше усмотрение).
;-----------------------------------
;--- by superfraggle
;--- http://www.autohotkey.com/board/topic/20084-secondary-monitor/?p=180370
;
; Enables, disables or toggles a display device.
;
; DeviceName: The name of the device, e.g. \\.\DISPLAY1
; Alternatively, it can be the index of the device, which might
; not be the same as the number shown in Display Settings.
; Action: The action to take.
; 0 Disable (false is synonymous with 0)
; 1 Enable (true is synonymous with 1)
; -1 Toggle
; NoReset: If true, settings will be saved to the registry, but not applied.
;
; The following can be used to apply settings saved in the registry:
; DllCall("ChangeDisplaySettings", "uint", 0, "uint", 1)
;
; Return values:
; DISP_CHANGE_SUCCESSFUL 0
; DISP_CHANGE_RESTART 1
; DISP_CHANGE_FAILED -1
; DISP_CHANGE_BADMODE -2
; DISP_CHANGE_NOTUPDATED -3
; DISP_CHANGE_BADFLAGS -4
; DISP_CHANGE_BADPARAM -5
;
EnableDisplayDevice(DeviceName, Action=1, NoReset=false)
{
if (Action = -1) || (DeviceName+0 != "")
{
VarSetCapacity(DisplayDevice, 424), NumPut(424, DisplayDevice, 0)
VarSetCapacity(ThisDeviceName, 32, 0)
Index = 0
Loop {
if !DllCall("EnumDisplayDevices", "UInt", 0, "UInt", A_Index-1, "UInt", &DisplayDevice, "UInt", 0)
return -5
ThisDeviceState := NumGet(DisplayDevice, 164)
Index += 1
DllCall("lstrcpynA", "Str", ThisDeviceName, "UInt", &DisplayDevice+4, "int", 32)
if (DeviceName = Index || DeviceName = ThisDeviceName)
{
if Action = -1
Action := !(ThisDeviceState & 1)
DeviceName := ThisDeviceName
break
}
}
}
VarSetCapacity(devmode, 156, 0), NumPut(156, devmode, 36, "UShort")
if (Action){
NumPut(0x000020, devmode, 40) ; Enable by setting position = {0,0}
VarSetCapacity(Point,8,0)
Numput(A_ScreenWidth + 1,Point)
Numput(&point,devmode,44)
}
else
NumPut(0x180020, devmode, 40) ; Disable by setting size = {0,0}
err := DllCall("ChangeDisplaySettingsEx", "str", DeviceName, "uint", &devmode, "uint", 0, "uint", 0x10000001, "uint", 0)
if !err && !NoReset
err := DllCall("ChangeDisplaySettings", "uint", 0, "uint", 1)
return err, ErrorLevel:=Action
}
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться