簡體   English   中英

如何從索引或名稱獲取監視器句柄?

[英]How to get Monitor Handle from Index or Name?

C ++版本( 如何從顯示設備名稱獲取HMONITOR句柄? )沒有提供解決方案(至少在我需要非OOP代碼的情況下,例如在AutoIt中)。

我正在修改一個使用WinAPI函數的AutoIt腳本,以支持多顯示器Windows 7+系統。 我可以提供監視器/設備名稱或它的索引,但是某些功能需要使用HMONITOR句柄。

無法通過Window或像素或點獲得HMONITOR,這將非常容易。 不,我只需要從名稱或索引中獲取該句柄,並且需要一個非OOP解決方案(理想情況下是AutoIt&WinAPI調用,但非OOP偽代碼會很好)。

下面的函數返回具有以下結構的數組:

| 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]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM