[AHK] WinHttpRequest.5.1报错 0x80092004 找不到对象或属性
目录
背景描述
用浏览器访问,正常返回
编辑
AHK v2官方示例源代码
AHK v2运行结果报错(0x80092004) 找不到对象或属性
用thqby大佬的WinHttpRequest.ahk库测试报错 0x80092004 找不到对象或属性
附:
用Apifox访问,也正常返回
AHK v1 官方示例源代码
AHK v1运行失败报错 0x80092004 找不到对象或属性
用Msxml2.XMLHTTP则能正常得到结果
背景描述
想通过ahk编程,获取 https://autohotkey.com/download/2.0/version.txt 的文件内容。
在确认用浏览器可以正常访问情况下,用官方帮助中的示例运行会报错 Error: (0x80092004) 找不到对象或属性。用 thqby大佬的 WinHttpRequest.ahk 网络请求库 https://github.com/thqby/ahk2_lib/blob/master/WinHttpRequest.ahk 也报同样错误。
求指点
用浏览器访问,正常返回
AHK v2官方示例源代码
whr := ComObject("WinHttp.WinHttpRequest.5.1")
whr.Open("GET", "https://autohotkey.com/download/2.0/version.txt", true)
whr.Send()
whr.WaitForResponse()
version := whr.ResponseText
MsgBox version
AHK v2运行结果报错(0x80092004) 找不到对象或属性
如果把参数 true改为 false ,报错如下:
用thqby大佬的WinHttpRequest.ahk库测试报错 0x80092004 找不到对象或属性
/************************************************************************* @file: WinHttpRequest.ahk* @description: 网络请求库* @author thqby* @date 2021/08/01* @version 0.0.18***********************************************************************/#Requires AutoHotkey v2.0
whr := WinHttpRequest()
whr.Open("Get", "https://www.autohotkey.com/download/2.0/version.txt", True)
whr.Send()
whr.WaitForResponse()
MsgBox whr.ResponseTextclass WinHttpRequest {static AutoLogonPolicy := {Always: 0,OnlyIfBypassProxy: 1,Never: 2}static Option := {UserAgentString: 0,URL: 1,URLCodePage: 2,EscapePercentInURL: 3,SslErrorIgnoreFlags: 4,SelectCertificate: 5,EnableRedirects: 6,UrlEscapeDisable: 7,UrlEscapeDisableQuery: 8,SecureProtocols: 9,EnableTracing: 10,RevertImpersonationOverSsl: 11,EnableHttpsToHttpRedirects: 12,EnablePassportAuthentication: 13,MaxAutomaticRedirects: 14,MaxResponseHeaderSize: 15,MaxResponseDrainSize: 16,EnableHttp1_1: 17,EnableCertificateRevocationCheck: 18,RejectUserpwd: 19}static PROXYSETTING := {PRECONFIG: 0,DIRECT: 1,PROXY: 2}static SETCREDENTIALSFLAG := {SERVER: 0,PROXY: 1}static SecureProtocol := {SSL2: 0x08,SSL3: 0x20,TLS1: 0x80,TLS1_1: 0x200,TLS1_2: 0x800,All: 0xA8}static SslErrorFlag := {UnknownCA: 0x0100,CertWrongUsage: 0x0200,CertCNInvalid: 0x1000,CertDateInvalid: 0x2000,Ignore_All: 0x3300}__New(UserAgent := unset) {(this.whr := ComObject('WinHttp.WinHttpRequest.5.1')).Option[0] := IsSet(UserAgent) ? UserAgent : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36 Edg/89.0.774.68'}request(url, method := 'GET', post_data?, headers := {}) {this.Open(method, url)for k, v in headers.OwnProps()this.SetRequestHeader(k, v)this.Send(post_data?)return this.ResponseText}enableRequestEvents(Enable := true) {static vtable := init_vtable()if !Enablereturn this._ievents := this._ref := 0if this._ieventsreturnIConnectionPointContainer := ComObjQuery(pwhr := ComObjValue(this.whr), '{B196B284-BAB4-101A-B69C-00AA00341D07}')DllCall('ole32\CLSIDFromString', 'str', '{F97F4E15-B787-4212-80D1-D380CBBF982E}', 'ptr', IID_IWinHttpRequestEvents := Buffer(16))ComCall(4, IConnectionPointContainer, 'ptr', IID_IWinHttpRequestEvents, 'ptr*', IConnectionPoint := ComValue(0xd, 0)) ; IConnectionPointContainer->FindConnectionPointIWinHttpRequestEvents := Buffer(3 * A_PtrSize)NumPut('ptr', vtable.Ptr, 'ptr', ObjPtr(this), 'ptr', ObjPtr(IWinHttpRequestEvents), IWinHttpRequestEvents)ComCall(5, IConnectionPoint, 'ptr', IWinHttpRequestEvents, 'uint*', &dwCookie := 0) ; IConnectionPoint->Advisethis._ievents := { __Delete: (*) => ComCall(6, IConnectionPoint, 'uint', dwCookie) }static init_vtable() {vtable := Buffer(A_PtrSize * 7), offset := vtable.Ptrfor nParam in StrSplit('3113213')offset := NumPut('ptr', CallbackCreate(EventHandler.Bind(A_Index), , Integer(nParam)), offset)vtable.DefineProp('__Delete', { call: __Delete })return vtablestatic EventHandler(index, this, arg1 := 0, arg2 := 0) {if (index < 4) {IEvents := NumGet(this, A_PtrSize * 2, 'ptr')if index == 1NumPut('ptr', this, arg2)if index == 3ObjRelease(IEvents)else ObjAddRef(IEvents)return 0}req := ObjFromPtrAddRef(NumGet(this, A_PtrSize, 'ptr'))req.readyState := index - 2switch index {case 4: ; OnResponseStarttry req.OnResponseStart(arg1, StrGet(arg2, 'utf-16'))case 5: ; OnResponseDataAvailabletry req.OnResponseDataAvailable(NumGet((pSafeArray := NumGet(arg1, 'ptr')) + 8 + A_PtrSize, 'ptr'),NumGet(pSafeArray + 8 + A_PtrSize * 2, 'uint'))case 6: ; OnResponseFinishedtry req._ref := 0, req.OnResponseFinished()case 7: ; OnErrortry req.readyState := req._ref := 0, req.OnError(arg1, StrGet(arg2, 'utf-16'))}}static __Delete(this) {loop 7CallbackFree(NumGet(this, (A_Index - 1) * A_PtrSize, 'ptr'))}}};#region IWinHttpRequest https://learn.microsoft.com/en-us/windows/win32/winhttp/iwinhttprequest-interfaceSetProxy(ProxySetting, ProxyServer, BypassList) => this.whr.SetProxy(ProxySetting, ProxyServer, BypassList)SetCredentials(UserName, Password, Flags) => this.whr.SetCredentials(UserName, Password, Flags)SetRequestHeader(Header, Value) => this.whr.SetRequestHeader(Header, Value)GetResponseHeader(Header) => this.whr.GetResponseHeader(Header)GetAllResponseHeaders() => this.whr.GetAllResponseHeaders()Send(Body?) => (this._ievents && this._ref := this, this.whr.Send(Body?))Open(verb, url, async := false) {this.readyState := 0this.whr.Open(verb, url, async)this.readyState := 1}WaitForResponse(Timeout := -1) => this.whr.WaitForResponse(Timeout)Abort() => (this._ref := this.readyState := 0, this.whr.Abort())SetTimeouts(ResolveTimeout := 0, ConnectTimeout := 60000, SendTimeout := 30000, ReceiveTimeout := 30000) => this.whr.SetTimeouts(ResolveTimeout, ConnectTimeout, SendTimeout, ReceiveTimeout)SetClientCertificate(ClientCertificate) => this.whr.SetClientCertificate(ClientCertificate)SetAutoLogonPolicy(AutoLogonPolicy) => this.whr.SetAutoLogonPolicy(AutoLogonPolicy)Status => this.whr.StatusStatusText => this.whr.StatusTextResponseText => this.whr.ResponseTextResponseBody {get {pSafeArray := ComObjValue(t := this.whr.ResponseBody)pvData := NumGet(pSafeArray + 8 + A_PtrSize, 'ptr')cbElements := NumGet(pSafeArray + 8 + A_PtrSize * 2, 'uint')return ClipboardAll(pvData, cbElements)}}ResponseStream => this.whr.responseStreamOption[Opt] {get => this.whr.Option[Opt]set => (this.whr.Option[Opt] := Value)}Headers {get {m := Map(), m.Default := ''loop parse this.GetAllResponseHeaders(), '`r`n'if (p := InStr(A_LoopField, ':'))m[SubStr(A_LoopField, 1, p - 1)] .= LTrim(SubStr(A_LoopField, p + 1))return m}}/*** The OnError event occurs when there is a run-time error in the application.* @prop {(this,errCode,errDesc)=>void} OnError*/OnError := 0/*** The OnResponseDataAvailable event occurs when data is available from the response.* @prop {(this,safeArray)=>void} OnResponseDataAvailable*/OnResponseDataAvailable := 0/*** The OnResponseStart event occurs when the response data starts to be received.* @prop {(this,status,contentType)=>void} OnResponseDataAvailable*/OnResponseStart := 0/*** The OnResponseFinished event occurs when the response data is complete.* @prop {(this)=>void} OnResponseDataAvailable*/OnResponseFinished := 0;#endregionreadyState := 0, whr := 0, _ievents := 0static __New() {if this != WinHttpRequestreturnthis.DeleteProp('__New')for prop in ['OnError', 'OnResponseDataAvailable', 'OnResponseStart', 'OnResponseFinished']this.Prototype.DefineProp(prop, { set: make_setter(prop) })make_setter(prop) => (this, value := 0) => value && (this.DefineProp(prop, { call: value }), this.enableRequestEvents())}
}
附:
用Apifox访问,也正常返回
AHK v1 官方示例源代码
whr := ComObjCreate("WinHttp.WinHttpRequest.5.1")
whr.Open("GET", "https://www.autohotkey.com/download/1.1/version.txt", true)
whr.Send()
whr.WaitForResponse()
version := whr.ResponseText
MsgBox % version
AHK v1运行失败报错 0x80092004 找不到对象或属性
用Msxml2.XMLHTTP则能正常得到结果
#Requires AutoHotkey v2.0
req := ComObject("Msxml2.XMLHTTP")
req.open("GET", "https://www.autohotkey.com/download/2.0/version.txt", true)
req.onreadystatechange := Ready
req.send()PersistentReady() {if (req.readyState != 4) ; 没有完成.returnif (req.status == 200) ; OK.MsgBox "Latest AutoHotkey version: " req.responseTextelseMsgBox "Status " req.status,, 16ExitApp
}
相关文章:

[AHK] WinHttpRequest.5.1报错 0x80092004 找不到对象或属性
目录 背景描述 用浏览器访问,正常返回 编辑 AHK v2官方示例源代码 AHK v2运行结果报错(0x80092004) 找不到对象或属性 用thqby大佬的WinHttpRequest.ahk库测试报错 0x80092004 找不到对象或属性 附: 用Apifox访问,也正常返回 AHK v1 …...
`speech_recognition` 是一个流行的库
在Python中,speech_recognition 是一个流行的库,用于从各种来源(如麦克风、文件等)进行语音识别。以下是您提到的技术名称和相应的Python代码示例。 技术名称 语音识别(Speech Recognition):这…...

MFC Ribbon菜单 - 中英文实时切换方法
简介 最近在搞一个老外的项目,本来谈的好好的,纯英文界面。项目接近尾声了,又提出了中英文实时切换的新需求,没办法就只能想办法,毕竟客户最大嘛。 实现方法 还好本来的ribbon英文菜单不复杂,就用纯C编码…...

MFC程序创建word,创建表格,写入数据
文章目录 1、MFC程序功能:2、MFC程序实现2.1 创建项目2.2 添加word操作类2.3 添加word资源2.4 编写代码,实现将数据写入到word2.5 运行程序、验证功能3、工程代码下载 1、MFC程序功能: 创建word文档;向文档中写入字符串ÿ…...

FPGA:基于复旦微FMQL10S400 /FMQL20S400 国产化核心板
复旦微电子是国内集成电路设计行业的领军企业之一,早在2000年就在香港创业板上市,成为行业内首家上市公司。公司的RFID芯片、智能卡芯片、EEPROM、智能电表MCU等多种产品在市场上的占有率位居行业前列。 今天介绍的是搭载复旦微 FMQL10S400/FMQL20S400的…...

centos下使用yum安装keepalived工具
1、安装如下rpm包,不安装此包在装keepalived时会报错 mkdir keepalived_rpm cd keepalived_rpm/ wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-community-libs-compat-8.0.36-1.el7.x86_64.rpm 2、使用yum进行keepalived的安装 yum -y install keepal…...

无人机图像目标检测
本仓库是人工智能课程的课程作业仓库,主要是完成无人机图像目标检测的任务,我们对visdrone数据集进行了处理,在yolo和ssd两种框架下进行了训练和测试,并编写demo用于实时的无人机图像目标检测。 requirements依赖: ss…...
JSqlParser 解析 sql
目录 前言一、Maven依赖二、获取sql中的表名三、获取sql中的具体信息 前言 JSqlParser是一个 SQL 语句解析器。它将 SQL 语句转换为可遍历的 Java 类层次结构,可以方便的用代码对 SQL 语句进行解析,修改等操作。 官网 api 文档和 github 地址如下&…...

Vue中使用mind-map实现在线思维导图
概述 在前面的文章Vue中实现在线画流程图实现中介绍了流程图的在线绘制,在本文,给大家分享一下基于mind-map实现在线的思维导图,并实现:1. 导图导出为图片;2. 打开xmind文件。 实现效果 实现 1. mind-map简介 simp…...

ChatGPT 深度解析:技术驱动的智能对话
在当今科技飞速发展的时代,ChatGPT 无疑成为了最耀眼的明星之一。它以其令人惊叹的智能对话能力,引发了全球范围内的广泛关注和热议。 ChatGPT 背后的技术堪称精妙绝伦。它基于深度学习算法,通过对海量数据的学习和分析,从而能够理…...

Armv8-R内存模型详解
目录 1.内存模型的必要性 2.Armv8-R内存模型分类 2.1 Normal memory 2.2 Device Memory 2.2.1 Gathering 2.2.2 Reordering 2.2.3 Early Write Acknowledgement 3.小结 大家好,今天是悲伤的肌肉。 在调研区域控制器芯片时,发现了S32Z、Stellar …...
Python面经
文章目录 Python基本概念1. Python是**解释型**语言还是**编译型**语言2. Python是**面向对象**语言还是面向过程语言3. Python基本数据类型4.append和 extend区别5.del、pop和remove区别6. sort和sorted区别介绍一下Python 中的字符串编码is 和 的区别*arg 和**kwarg作用浅拷…...

海外ASO:iOS与谷歌优化的相同点和区别
海外ASO是针对iOS的App Store和谷歌的Google Play这两个主要海外应用商店进行的优化过程,两个不同的平台需要采取不同的优化策略,以下是对iOS优化和谷歌优化的详细解析: 一、iOS优化(App Store) 1、关键词覆盖 选择关…...

【C++题解】1168. 歌唱比赛评分
问题:1168. 歌唱比赛评分 类型:数组找数 题目描述: 四(1) 班要举行一次歌唱比赛,以选拔更好的苗子参加校的歌唱比赛。评分办法如下:设 N 个评委,打 N 个分数( 0≤每个分…...
鸿蒙开发工程师面试-架构篇
1. 假如让你负责鸿蒙App架构设计,你会关注哪些方面? 分层架构设计: 将应用划分为产品定制层、基础特性层和公共能力层,以降低层间依赖性,提升代码可维护性。通过分层架构设计,进一步明确每层的职责和层间交…...

【Redis】持久化
对于Redis中间件来说,一般是作为内存型数据库或者缓存出现的。但是由于其数据是在内存中,因此当Redis所在的主机宕机之后,数据就会消失,再次重启之后,没有任何数据。这对于生产环境来说,是属于P0级别的灾难…...

港股指数实时行情API接口
港股 指数 实时 行情 API接口 # Restful API https://tsanghi.com/api/fin/index/HKG/realtime?token{token}&ticker{ticker}指定指数代码,获取该指数的实时行情(开、高、低、收、量)。 更新周期:实时。 请求方式:…...

Qt5开发实战_图形_QPen
Qpen是Qt框架中的一个类,用于定义绘制线条的属性,包括颜色、宽度、样式、端点样式和连接样式。 具体属性(设置颜色和设置宽度直接pass从样式开始): 设置样式: pen的样式主要有以下几种: 分别是:直线样式…...

linux进程周边知识——内核对硬件的管理——计算机世界的管理
前言:本节主要讲解内核也就是操作系统对于硬件的管理, 本节内容同样为进程的周边知识。 主要是关于软件方面, 和我的上一篇——冯诺依曼体系结构可以说是兄弟文章, 这篇文章主要是关于硬件方面。 两篇文章都是为学习进程做准备。但…...
同声传译语音合成接口,分段预合成实现丝滑的衔接效果
背景: 在使用微信官方语音合成插件的时候遇到一个问题,textToSpeech这个api的内容限制在官网的文档上明明是1000个字节,也就是说能保证333个中文字符应该是没有问题的,但是也不知道为什么我这里仅仅传了150个中文字符就报错了&…...
Vim 调用外部命令学习笔记
Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

idea大量爆红问题解决
问题描述 在学习和工作中,idea是程序员不可缺少的一个工具,但是突然在有些时候就会出现大量爆红的问题,发现无法跳转,无论是关机重启或者是替换root都无法解决 就是如上所展示的问题,但是程序依然可以启动。 问题解决…...

盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来
一、破局:PCB行业的时代之问 在数字经济蓬勃发展的浪潮中,PCB(印制电路板)作为 “电子产品之母”,其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透,PCB行业面临着前所未有的挑战与机遇。产品迭代…...
三维GIS开发cesium智慧地铁教程(5)Cesium相机控制
一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点: 路径验证:确保相对路径.…...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试
作者:Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位:中南大学地球科学与信息物理学院论文标题:BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接:https://arxiv.…...

1.3 VSCode安装与环境配置
进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...

NFT模式:数字资产确权与链游经济系统构建
NFT模式:数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新:构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议:基于LayerZero协议实现以太坊、Solana等公链资产互通,通过零知…...

Reasoning over Uncertain Text by Generative Large Language Models
https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...
LRU 缓存机制详解与实现(Java版) + 力扣解决
📌 LRU 缓存机制详解与实现(Java版) 一、📖 问题背景 在日常开发中,我们经常会使用 缓存(Cache) 来提升性能。但由于内存有限,缓存不可能无限增长,于是需要策略决定&am…...
boost::filesystem::path文件路径使用详解和示例
boost::filesystem::path 是 Boost 库中用于跨平台操作文件路径的类,封装了路径的拼接、分割、提取、判断等常用功能。下面是对它的使用详解,包括常用接口与完整示例。 1. 引入头文件与命名空间 #include <boost/filesystem.hpp> namespace fs b…...