我目前有一台电视通过 HDMI 连接到我的电脑。当我将电视的输入设置为适当的 HDMI 端口时,电脑就会看到它,并且电脑会将其添加为第二个显示器。
我想要做的是在连接辅助显示器时运行一个脚本(启动 XBMC)。
操作系统是Windows 8。
答案1
您可以在 AutoHotKey 或 AutoIt 中执行此操作。它们可以挂接 WinApi,非常简单,创建一个 .ahk 文件并使用 AutoHotkeyU64.exe 运行它
OnMessage(0x219, "MsgMonitor")
MsgMonitor(wParam, lParam, msg)
{
if (wParam = 7) {
Run, Notepad.exe
} Else {
MsgBox probably disconected. do something else
}
MsgBox check %wParam% and %lParam% and decide to run programs with %msg%
}
;wParam: 7 lParam: 0 monitor connected
;wParam: 32772 lParam: 8977536 should be on disconected
我没有任何 HDMI 设备可以测试它,但是当我断开主显示器上的 DVI 电缆时它可以工作。
答案2
我得到了wParam 7
和lParam 0
显示器已连接和已断开连接的信息。所以我用SysGet
和MonitorCount
计算监视器的数量来确定它们是否已连接或断开连接。
SysGet, oldMonitorCount, MonitorCount
OnMessage(0x219, "MsgMonitor")
MsgMonitor() {
global oldMonitorCount
Sleep 5000 ; needs time to detect any new monitors
SysGet, newMonitorCount, MonitorCount
if (oldMonitorCount = newMonitorCount) {
MsgBox Some other device was (un)plugged
} else {
if (newMonitorCount = 2) {
MsgBox Docked - battle station ready for action.
} else {
MsgBox Undocked - be free!
}
}
oldMonitorCount := newMonitorCount
}
我认为以上内容OnMessage(0x219)
来自此 Windows 消息列表。值得注意的是,代码0x0219
与 相关联WM_DEVICECHANGE
。这意味着它会在以下情况下触发任何设备已(未)插入,包括 USB 设备。对我来说,这包括插入耳机。为了解决这个问题,我跟踪当前显示器数量,然后仅在该数字发生变化时运行我的脚本。