AutoHotkey調用系統調色板獲取顏色


寫腳本有時候需要選擇顏色,在AutoHotkey論壇上看到了 ChooseColor 函數,由於原來的算法有點麻煩,我稍微調整了下分享出來。
並增加了 argb 的選項(不過生成的都是完全不透明的顏色,有需求的可自行調整)
以下是AutoHotkey v2 beta版代碼

; https://docs.microsoft.com/en-us/windows/win32/api/commdlg/ns-commdlg-choosecolora-r1
;系統的調色板選擇顏色
selectColor(bARGB:=false, bRGB:=true) { ; CC_FULLOPEN := 0x2
    CC := buffer(36+64, 0)
    numput("UPtr", 36, CC)
    numput("UPtr", hOwner:=0, CC, A_PtrSize)
    numput("UPtr", clDefault:=0, CC, A_PtrSize * 3)
    numput("UPtr", CC.ptr+36, CC, A_PtrSize * 4) ; COLORREF *lpCustColors
    numput("UPtr", flags:=3, CC, A_PtrSize * 5)
    DllCall("comdlg32\ChooseColorA", "Ptr",CC)
    if bRGB {
        nBGR := numget(CC, A_PtrSize * 3, "UPtr")
        cl := (nBGR & 0xFF) << 16 | nBGR & 0x0000FF00 | nBGR >> 16
    } else
        cl := numget(CC, A_PtrSize * 3, "UPtr")
    res := bARGB ? (0xff000000 | cl) : cl ;轉成 argb,透明度為ff(完全不透明),可自行修改
    return res
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM