
외부 디스플레이에 연결된 경우 절전 모드로 전환하지 않고 노트북을 닫고 싶습니다. 외부 디스플레이에 연결되어 있지 않을 때 덮개를 닫으면 노트북이 절전 모드로 전환되도록 하고 싶습니다.
전원 설정을 수동으로 전환하면 이 작업을 수행할 수 있다는 것을 알고 있지만 자동으로 설정하고 싶습니다. 어떤 아이디어? 외부 디스플레이 연결을 추적할 수 있나요?
윈도우 10
답변1
두 가지 전원 구성표를 결정(또는 필요한 경우 생성)합니다. 하나는 절전 버튼이 활성화되고 다른 하나는 비활성화됩니다.
명령을 사용하여
powercfg /l
이러한 체계의 GUID를 결정합니다.AutoHotKey를 설치하고 Windows를 시작할 때마다 이 모니터링 스크립트를 실행하도록 설정하세요. 모니터가 연결되거나 연결 해제될 때마다 AutoHotKey는 전원 구성표를 전환하는 스크립트를 실행합니다.
온메시지(0x219, "MsgMonitor") MsgMonitor(wParam, lParam, 메시지) { if (wParam = 7) { 실행, powercfg /s 381b4222-f694-41f0-9685-ff5bb260df2e } 또 다른 { 실행, powercfg /s 381b4222-0001-2222-3333-000000000000 } MsgBox는 %wParam% 및 %lParam%을 확인하고 %msg%로 프로그램을 실행하도록 결정합니다. } ;wParam: 7 lParam: 0 모니터가 연결됨 ;wParam: 32772 lParam: 8977536은 연결이 끊어져야 합니다.
중요한:위 코드의 샘플 GUID를 단계에서 결정한 GUID로 바꿉니다.2.
출처:
답변2
@miroxlav 솔루션이 나에게 적합하지 않았습니다. 스크립트를 다음과 같이 변경했습니다.
- 여전히 두 개의 절전 구성을 만들어야 합니다.
- AutoHotKey 스크립트는 일반적으로 시작 시 실행됩니다.
- 잡힌 이벤트가 약간 다릅니다(WM_DISPLAYCHANGE)
- powershell get-WmiObject 또는 장치 관리자에서 기본 모니터 인스턴스 이름을 식별해야 합니다.
- 전원 구성 UUID도 스크립트에 하드 코딩되어 있습니다.
/*
Please note that it is not sufficient to count the number of monitors because the
main monitors goes off line when you close the lid.
Which resets the count to... 1
So instead, we just make our decision on the presence of a different monitor than the known
main one (hardcoded id, SN is a poor criterion).
*/
/*
Subscribe to windows event
0x7E = WM_DISPLAYCHANGE
*/
OnMessage(0x7E, "MsgMonitor")
MsgMonitor(wParam, lParam, msg) {
/* Sleep 2 sec because there is a delay before display is known to WMI */
Sleep 2000
/* default */
strComputer := "."
/* This is the one for my PC... */
myMonitor := "DISPLAY\LGD056E\4&13419694&0&UID265988_0"
objWMIService := ComObjGet("winmgmts:{impersonationLevel=impersonate}!\\" . strComputer . "\root\wmi")
colItems := objWMIService.ExecQuery("Select * FROM WMIMonitorID")._NewEnum
hasExternal := false
While colItems[objItem]
if objItem.instanceName != myMonitor {
hasExternal := True
}
if ( hasExternal ) {
/* this is the power config that does not set laptop to sleep on lid closing */event
Run, powercfg /s a48ebd52-0590-400d-b032-ac7f4302c0e1
} Else {
/* this instead is the power config that does set laptop to sleep on lid closing event */
Run, powercfg /s 377a8558-bff4-4f51-ab43-626b1aa5a65f
}
}
답변3
@miroxlav 솔루션이 작동했지만 외부 디스플레이를 제거하면 원래 전원 설정으로 돌아가지 않습니다. 내가 한 방법은 다음과 같습니다.
- 덮개가 닫힐 때 절전 모드를 비활성화하는 전원 계획을 만듭니다.
- 덮개가 닫혀 있을 때 절전 모드를 비활성화하지 않는 전원 계획을 만드세요.
- 오토핫키 설치
메모장을 열고 아래 코드를 붙여넣으세요. AHK로 저장하고 실행하세요.
이 자동 핫키 스크립트는 모니터 수와 기본 모니터를 감지합니다. 모니터 수가 1보다 크면 전원 설정이 변경됩니다. 해당 전원 구성표를 붙여넣는 것을 잊지 마세요.
이것이 작동한다면 시작 시 Win + R을 눌러 이 스크립트를 실행한 다음 shell:startup
거기에 스크립트를 입력하고 붙여넣을 수 있습니다.
OnMessage(0x219, "MsgMonitor")
MsgMonitor(wParam, lParam, msg)
{
SysGet, MonitorCount, MonitorCount
SysGet, MonitorPrimary, MonitorPrimary
count := 0
Loop, %MonitorCount%
{
count++
}
IfLessOrEqual, count, 1
Run, powercfg /s c7046c63-d4a3-4246-910c-c994cd704433 /* no external monitor power setting */
Else
Run, powercfg /s 3791f438-87b9-4243-89a1-00c797e02c84 /* external monitor connected */
}