モニターの入力ソースを AutoHotkey で変更したいのですが、これは部分的に機能しています。ただし、ホットキーを使用してモニターの入力ソースを PC (DVI) から xbox (YPbYr) に変更すると、モニターは xbox がオンになっていることを検出せず、ソースがないと表示されます。
モニター => Asus vg236
モニターの VCP モニター入力ソース コード:
- DVI => 3
- HDMI => 4
- YPbPr => 12
Windows API モニター構成関数、具体的には DDC/CI を使用する SetVCPFeature 関数を使用しています。
いくつかの調査の後、VCP 入力ソースを設定することに決めました。これには、特に入力ソースに関する 71 ページに役立つ情報があります。
オートホットキー コード:
setMonitorSource(source)
{
; Initialize Monitor handle
hMon := DllCall("MonitorFromPoint"
, "int64", 0 ; point on monitor
, "uint", 1) ; flag to return primary monitor on failure
; Get Physical Monitor from handle
VarSetCapacity(Physical_Monitor, (A_PtrSize ? A_PtrSize : 4) + 128, 0)
DllCall("dxva2\GetPhysicalMonitorsFromHMONITOR"
, "int", hMon ; monitor handle
, "uint", 1 ; monitor array size
, "int", &Physical_Monitor) ; point to array with monitor
hPhysMon := NumGet(Physical_Monitor)
DllCall("dxva2\SetVCPFeature"
, "int", hPhysMon
, "char", 0x60 ;VCP code for Input Source Select
, "uint", source)
; Destroy handle
DllCall("dxva2\DestroyPhysicalMonitor", "int", hPhysMon)
}
!z::
setMonitorSource(12)
return
ソースが変更されたことをモニターに通知するために、どこかに別の VCP コード値を設定する必要があるかどうか疑問に思っています。
注: 私は HDMI デバイスを持っていないので、これが YPbYr のみに影響するのか、すべての入力に影響するのかわかりません。
質問: 現在、モニターは YBpYr がオンになっていないかのように動作しますが、YBpYr がオンになっていることをモニターに認識させるにはどうすればよいですか?
質問: 0x60 入力ソース以外の別の VCP コード値を設定する必要がありますか?