首页 > 移动平台 > 详细

AutoHotkey获取windows10新增的设置界面(ApplicationFrameHost.exe)相关信息

时间:2020-03-07 16:59:55      阅读:96      评论:0      收藏:0      [点我收藏+]

技术分享图片

 

用 AutoHotkey 通过 acc 方式获取上图的相关信息。

值得注意的是 acc 不是用窗口的 hwnd, 而是从控件 Windows.UI.Core.CoreWindow1 的 hwnd 一层层获取的。

相关文件下载

AccViewer.exe 是查看窗口的工具,

acc.ahk 是基础库,

具体应用见 Applicationframehost.ahk

msgbox(format("分类:{1}`n列表第2项:{2}`n标题:{3}`n子标题:{4}", _10.type(),_10.list()[2],_10.title(),_10.subTitle()))
#include *i %A_LineFile%\..\acc.ahk

#if WinActive("ahk_exe ApplicationFrameHost.exe")

:O:eng::english(United States)
return

F4::
_10.title()
return

#if

class _10
{

    accRoot(winTitle:="ahk_class ApplicationFrameWindow")
    {
        winId := ControlGetHwnd("Windows.UI.Core.CoreWindow1", winTitle) ;NOTE 不是主窗口,而是控件
        dllcall("LoadLibrary","Str","oleacc","Ptr")
        if dllcall("oleacc\AccessibleObjectFromWindow", "ptr",winId, "uint",0, "ptr",-VarSetCapacity(IID,16)+NumPut(0x719B3800AA000C81,NumPut(0x11CF3C3D618736E0,IID,"int64"),"int64"), "ptr*",pacc)=0
            return ComObject(9,pacc,1)
    }

    ;分类(查找框下面第1行)
    type(winTitle:="ahk_class ApplicationFrameWindow")
    {
        return Acc_GetChildByPath(this.accRoot(winTitle), "4.4").accName(0)
    }

    ;左侧列表名称
    list(winTitle:="ahk_class ApplicationFrameWindow")
    {
        arr := []
        for _, accChild in Acc_Children(Acc_GetChildByPath(this.accRoot(winTitle), "4.5"))
            arr.push(accChild.accName(0))
        return arr
    }

    ;标题(右侧第1行)
    title(winTitle:="ahk_class ApplicationFrameWindow")
    {
        return Acc_GetChildByPath(this.accRoot(winTitle), "4.6.1").accName(0)
    }

    ;子标题(右侧第2行)
    subTitle(winTitle:="ahk_class ApplicationFrameWindow")
    {
        return Acc_GetChildByPath(this.accRoot(winTitle), "4.6.2.1.1").accName(0)
    }

}

 

AutoHotkey获取windows10新增的设置界面(ApplicationFrameHost.exe)相关信息

原文:https://www.cnblogs.com/hyaray/p/12433985.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!