C ++版本(How can I get an HMONITOR handle from a display device name?)没有提供解决方案(至少在我的情况下需要非OOP代码,例如在AutoIt中)。
我正在调整使用WinAPI函数的AutoIt脚本来支持多监视器Windows 7+系统。我可以提供监视器/设备名称或它的索引,但有些功能需要HMONITOR句柄。
我不能通过Window或像素或点获取HMONITOR,这很容易。不,我只需要从名称或索引获取句柄,我需要一个非OOP解决方案(理想情况下,AutoIt和WinAPI调用,但非OOP伪代码会很好)。
答案 0 :(得分:0)
下面的函数返回具有以下结构的数组:
| hMonitor | xPosMonitor | yPosMonitor | widthMonitor | heightMonitor |
| 0x00010001 | 0 | 0 | 1366 | 768 |
| 0x0001024 | 1366 | -236 | 1920 | 1080 |
代码:
#include-once
#include <Array.au3>
#include <WinAPIGdi.au3>
Func _getMonitorInfos()
Local $aPosition, $aMonitorData = _WinAPI_EnumDisplayMonitors()
If IsArray($aMonitorData) Then
ReDim $aMonitorData[$aMonitorData[0][0] + 1][5]
For $i = 1 To $aMonitorData[0][0] Step 1
$aPosition = _WinAPI_GetPosFromRect($aMonitorData[$i][1])
For $j = 0 To 3 Step 1
$aMonitorData[$i][$j + 1] = $aPosition[$j]
Next
Next
Return $aMonitorData
EndIf
EndFunc
Global $aMonitorData = _getMonitorInfos()
_ArrayDisplay($aMonitorData)
hMonitor值由数组$aMonitorData[1][1]
包含。