Вверх ↑
Этот топик читают: Гость
Ответов: 253
Рейтинг: 0
#1: 2021-11-20 18:00:43 ЛС | профиль | цитата
Добрый день, можно ли как-то программно отключить монитор.
Есть монитор один монитор, к нему подключён компьютер (VGA) и TV приставка(HDIM)
Если нужно посмотреть TV при включённом компьютере, приходится в ручную клацать кнопки на мониторе и выбирать нужный выход.
Хотелось бы как-то программно реализовать временное отключение питания от vga чтобы монитор сам переключался на TV приставку.
Именно временно( Чтобы можно было потом выключить tv приставку с пульта и монитор обратно выберет активный VGA)

Я пробовал утилиту nircmd С командой monitor off (но монитор гаснет на 3 секунды и потом опять загорается)
Также пробовал утилиту MultiMonitorTool (она просто отключает питание питание монитора как я понял)
И утилиту devcon отключал устройство видео карты( но он просто переключается в низкое разрешение)

Еще нашел вот такой вот скрипт на delphi

SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, 2);
mouse_event(MOUSEEVENTF_MOVE, 0,0,0,0);
но к сожалению не знаю как его правильно реализовать
c delphi не работал. видел пару примеров в hiasm но так и не разобрался как правильно их делать.
карма: 0

0
Ответов: 783
Рейтинг: 168
#2: 2021-11-20 20:20:06 ЛС | профиль | цитата
egorhay, Не представляю как можно программой переключать выходы на мониторе. Наверное нужны специальные драйвера для этого.
А для того чтобы просто отключать экран можно воспользоваться и стандартными компанентами.
Вот два варианта.
Add(MainForm,2953706,77,112)
{
Width=313
Height=230
Caption="display off."
}
Add(WinExec,3485469,224,189)
{
FileName="powershell.exe"
Param="-Command "(Add-Type '[DllImport(\"user32.dll\")]public static extern int SendMessage(int hWnd,int hMsg,int wParam,int lParam);' -Name a -Pas)::SendMessage(-1,0x0112,0xF170,2)""
Mode=0
}
Add(SendMessage,10948949,224,119)
{
WParam=61808
LParam=2
Point(Message)
link(onSend,9466846:doPosition,[])
link(Handle,1043077:Value,[])
link(Message,8650859:Value,[])
}
Add(Memory,1043077,224,28)
{
Default=Integer(-1)
}
Add(Memory,8650859,245,70)
{
Default=Integer(274)
}
Add(Button,14031168,133,119)
{
Left=30
Top=45
Width=80
Caption="SendMessage"
link(onClick,10948949:doSendMessage,[])
}
Add(Button,6444697,133,189)
{
Left=30
Top=85
Width=80
Caption="Powershell"
link(onClick,3485469:doExec,[])
}
Add(MouseEvent,9466846,301,105)
{
Point(doPosition)
link(X,12281532:Var2,[])
link(Y,12281532:Var3,[(321,82)])
}
Add(Memory,15052362,308,42)
{
Default=Integer(0)
}
Add(GetDataEx,12281532,308,77)
{
link(Data,15052362:Value,[])
}


Редактировалось 2 раз(а), последний 2021-11-20 20:27:37
карма: 15

0
Ответов: 253
Рейтинг: 0
#3: 2021-11-20 20:34:24 ЛС | профиль | цитата
Спасибо, но оба варианта также отключают экран на 3 секунды и он опять загорается
карма: 0

0
Ответов: 783
Рейтинг: 168
#4: 2021-11-20 20:36:55 ЛС | профиль | цитата
egorhay писал(а):
оба варианта также отключают экран на 3 секунды и он опять загорается

Они отключаются до тех пор, пока ты не начнёшь двигать мышкой.

Редактировалось 1 раз(а), последний 2021-11-20 20:37:36
карма: 15

0
Ответов: 253
Рейтинг: 0
#5: 2021-11-20 20:37:57 ЛС | профиль | цитата
Gunta писал(а):

Они отключаются до тех пор пока ты не начнёшь двигать мышкой.

В том-то и дело, я не двигаю ей
А и еще программа зависает при использование первого варианта,Сначало тухнет экран, потом загореться и зависате

--- Добавлено в 2021-11-20 20:45:12

А еще обратил внимание, у меня система в принципе не отключает монитор если это настроить в Электропитании ( Где еще сон можно поставить)

--- Добавлено в 2021-11-20 20:53:47

Еще сейчас подумал)) можно же реально его просто в ждущей режим переводить,это более долгий но надежный способ отключить временно питание с VGA.

Редактировалось 3 раз(а), последний 2021-11-20 20:53:47
карма: 0

0
Ответов: 783
Рейтинг: 168
#6: 2021-11-21 12:59:48 ЛС | профиль | цитата
egorhay писал(а):
можно же реально его просто в ждущей режим переводить,это более долгий но надежный способ отключить временно питание с VGA.

Советую изучить ключи командной строки для запуска входящей в состав Windows утилиты shutdown.exe /?


Add(MainForm,2953706,77,126)
{
Width=313
Height=242
Caption="display off."
}
Add(WinExec,3485469,224,182)
{
FileName="powershell.exe"
Param="-Command "(Add-Type '[DllImport(\"user32.dll\")]public static extern int SendMessage(int hWnd,int hMsg,int wParam,int lParam);' -Name a -Pas)::SendMessage(-1,0x0112,0xF170,2)""
Mode=0
}
Add(SendMessage,10948949,224,119)
{
WParam=61808
LParam=2
Point(Message)
link(Handle,1043077:Value,[])
link(Message,8650859:Value,[])
}
Add(Memory,1043077,224,28)
{
Default=Integer(-1)
}
Add(Memory,8650859,245,70)
{
Default=Integer(274)
}
Add(Button,6444697,133,182)
{
Left=30
Top=85
Width=80
Caption="Powershell"
link(onClick,3485469:doExec,[])
}
Add(Button,14031168,133,119)
{
Left=30
Top=45
Width=80
Caption="SendMessage"
link(onClick,10948949:doSendMessage,[])
}
Add(WinExec,14337625,224,224)
{
FileName="Shutdown"
Param="/s /f"
Mode=0
Action="runas"
}
Add(Button,4557176,133,231)
{
Left=30
Top=125
Width=80
Caption="Shutdown"
link(onClick,14337625:doShellExec,[])
}
Add(WinExec,11727441,224,287)
{
FileName="powershell.exe"
Param="-nologo -noprofile -command "& {Stop-Computer -Force}""
Mode=0
Action="runas"
}
Add(Button,929250,133,294)
{
Left=30
Top=160
Width=80
Caption="Stop-Computer"
link(onClick,11727441:doShellExec,[])
}

Не нажимайте 2 нижние кнопки не убедившись, что всё сохранили и что ничего не потеряете при выключении компьютера.
карма: 15

0
Ответов: 307
Рейтинг: 26
#7: 2021-11-21 19:49:20 ЛС | профиль | цитата
- del

Редактировалось 2 раз(а), последний 2021-11-22 06:21:37
карма: 2
0
7
Сообщение
...
Прикрепленные файлы
(файлы не залиты)