13

モニターの入力ソースを 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 コード値を設定する必要がありますか?

4

0 に答える 0