ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

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

2020-03-07 16:51:28  阅读:1026  来源: 互联网

标签:10 exe return AutoHotkey ApplicationFrameHost ahk accRoot winTitle class


 

用 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)
    }

}

 

标签:10,exe,return,AutoHotkey,ApplicationFrameHost,ahk,accRoot,winTitle,class
来源: https://www.cnblogs.com/hyaray/p/12433985.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有