使用 WinHttp.WinHttpRequest 查找检索到的二进制数据的大小

2024-02-23

我最近意识到 URLDownloadToFile 使用 IE 代理设置。所以我正在寻找替代方案,发现 WinHttp.WinHttpRequest 可能有效。

ResponseBody 属性似乎包含获取的数据,我需要将其写入文件。问题是我找不到它的字节大小。

http://msdn.microsoft.com/en-us/library/windows/desktop/aa384106%28v=vs.85%29.aspx http://msdn.microsoft.com/en-us/library/windows/desktop/aa384106%28v=vs.85%29.aspx有该对象的信息,但我没有找到它的相关属性。

有人能告诉怎么做吗?

strURL := "http://www.mozilla.org/media/img/sandstone/buttons/firefox-large.png"
strFilePath := A_ScriptDir "\dl.jpg"

pwhr := ComObjCreate("WinHttp.WinHttpRequest.5.1")
pwhr.Open("GET", strURL) 
pwhr.Send() 

if (psfa := pwhr.ResponseBody ) {   
    oFile := FileOpen(strFilePath, "w")
    ; msgbox % ComObjType(psfa) ; 8209 
    oFile.RawWrite(psfa, strLen(psfa)) ; not working
    oFile.Close()   
}

我自己找到了办法。

Since psfa是一个字节数组,简单地用元素的数量代表它的大小。

msgbox % psfa.maxindex() + 1    ; 17223 bytes for the example file. A COM array is zero-based so it needs to add one.

但是,要保存存储在 safearray 中的二进制数据,使用文件对象并不成功。 (可能有办法,但我找不到)相反,ADODB.Stream就像魅力一样。

strURL := "http://www.mozilla.org/media/img/sandstone/buttons/firefox-large.png"
strFilePath := A_ScriptDir "\dl.png"
bOverWrite := true

pwhr := ComObjCreate("WinHttp.WinHttpRequest.5.1")
pwhr.Open("GET", strURL) 
pwhr.Send() 

if (psfa := pwhr.ResponseBody ) {   
    pstm := ComObjCreate("ADODB.Stream")
    pstm.Type() := 1        ; 1: binary 2: text
    pstm.Open()
    pstm.Write(psfa)
    pstm.SaveToFile(strFilePath, bOverWrite ? 2 : 1)
    pstm.Close()    
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 WinHttp.WinHttpRequest 查找检索到的二进制数据的大小 的相关文章

  • 免注册 COM - COM dll 相对于客户端 exe 的位置

    我想使用免注册 com 这样我就不必注册我的旧 com 组件 但是 我希望能够将 com dll 放在不在客户端 exe 目录中或之下的位置 例如 lib 我无法在服务器清单文件中执行此操作 因为它不允许相对或绝对路径 有谁知道是否有办法解
  • Excel 2013 COM API 在服务帐户下挂起 ExportAsFixedFormat

    我有一个 NET Windows 服务 它调用 Excel 2013 COM API 以在 PDF 上导出 Excel 文档 我已尝试使用在两个不同域帐户下运行的 Windows 服务来执行此代码 这两个帐户都是运行代码的计算机上的本地管理
  • 从delphi应用程序调用.net4.0 com服务器后出现错误异常

    我们正在将代码库从 BDS2006 迁移到 Rad Studio XE 我们发现了一些非常奇怪的行为 如果我们在从 Net4 0 中实现的 COM 服务器创建一些对象后进行无效的浮点运算 即除以零 我们不会没有得到正常异常 即 EDivis
  • 使用 AutoHotkey 读取目录中的文件名

    我正在寻找一种读取文件夹并将每个文件名保存到变量的方法 到目前为止 这就是我所拥有的 Loop C My Documents Notes 在我的笔记目录中 有 pdf 文件 我想读取该目录并将文件名 Homework1 pdf 保存到变量中
  • 从脚本内更改自动热键托盘图标

    如何从 Autohotkey 脚本中将托盘图标更改为 my ico 例如 当脚本暂停时 为此 我在托盘菜单中提出了自己的 暂停脚本 菜单项 SingleInstance ignore Menu Tray Tip AutoCase 0 11
  • 需要从 DCOM 配置中删除对象 (DCOMCNFG)

    我们有一个带有 activex exe 和 com dll 的应用程序 安装后 我们会在 DCOM 配置中创建一个对象 如果我们尝试从 DCOM 配置中删除该对象 它就会关闭 直到我们再次重新打开它 想知道是否有任何程序可以从 DCOM 及
  • GetCPUDescriptorHandleForHeapStart 堆栈损坏

    我在使用 DirectX 12 0 编程时偶然发现了一个相当不寻常的问题 迄今为止还没有任何研究具有洞察力 我正在使用 C 而不是 C 进行编程 官方 DirectX 12 标头似乎支持 C 和 C 的绑定 但是编写 C 等效代码来执行上述
  • 使用 Excel Interop 关闭 Excel 应用程序而不保存消息

    我正在使用 Excel Interop COM 对象 我正在编写一种方法 其中打开和关闭 Excel 应用程序 然后打开 Excel 工作簿和工作表 完成这些工作后 我将关闭应用程序和工作簿 我的问题是 此方法可以重复调用多次 当工作表和应
  • 在 C++ 中不使用 CLSID 和注册表即可获取 COM 对象的 DLL 文件

    是否可以在不使用 CLSID 和注册表查找的情况下获取已加载 COM 对象的 DLL 文件名 我有一个IUnknown或者就我而言IBaseFilter接口指针 现在我想获取创建此 COM 对象的 DLL 文件名 我可以使用对象点地址来反向
  • 使用 CoCreateInstance 从 C++ 调用 COMVisible VB.Net dll

    自从我上一个问题以来 在某种程度上取得了进展 我已经编译了以下项目 它是基于https stackoverflow com a 10949784 846550 https stackoverflow com a 10949784 84655
  • python 的 win32com.client.dispatch() 无法识别注册的 COM 对象

    我正在尝试使用 Python 加载 COM 对象 我正在使用 win32com client Dispatch Name Of Object 加载它 并且 COM 对象已使用 regsvr32 注册 并在 HKLM CLSID 和 HKLM
  • 如何使用 Regsvr32 注册 .NET COM DLL?

    我有一个使用 COM DLL 的 VB6 应用程序 该DLL是用C 编写的 在 C 项目属性中 我检查了 Register for COM interop 选项 VB6 应用程序在我的开发机器上运行良好 C 代码完全遵循以下格式 CodeP
  • 用 .NET 实现替换 C++ ActiveX 组件?

    我现有的托管和非托管软件使用第三方提供的 ActiveX 组件来执行某些通信 但现在需要通过我的应用程序路由此通信 理想情况下 我能够安装一个 NET 组件 该组件将公开完全相同的接口 并且可以用作直接替代品 然而 我对 COM 的理解已经
  • Windows Server 2008 x64 之上的 Excel 2007 自动化

    我很清楚 Microsoft 支持库文章指出不支持自动化办公产品 UI less 看起来Windows Server 2008 x64 和 Excel 2007执行给定的声明 我在 NT 服务 本地系统帐户 OnStart 方法中运行以下代
  • VBA 中 .NET 的 System.Convert 的替代方案

    我正在 Microsoft Access 中编写一个 VBA 函数 以使用 RSA 密钥加密 解密文本数据 目前正在进行以下工作 CreateObject System Security Cryptography RSACryptoServ
  • PowerShell 中的 COM 接口包装?

    我在 C 中有以下代码 我尝试将其移植到 PowerShell 但我不知道如何移植这个演员 ISkypeEvents Event skype CallStatus CallStatusHandler 如果我只是在 PowerShell 控制
  • C#4做COM的时候需要调用Marshal.ReleaseComObject吗?

    我有 VS2010 并向我的项目添加了对 COM 库的引用 并且 VS 在项目中嵌入了主要互操作 如果我引用COM库中的对象并且我想快速处理它们而不等待GC 是否需要调用ReleaseComObject Marshal ReleaseCom
  • Interop.Excel 和 Tools.Excel 之间的区别?

    我目前正在开发 Microsoft Excel 的插件 但我对某些事情有点困惑 两者有什么区别Interop Excel and Tools Excel 例如 之间Interop Excel Workbook and Tools Excel
  • 我需要从 64 位 exe 访问 32 位 dll

    我知道我阅读了有关代理进程的所有内容 并且我能够创建代理 COM 但它要么全部在 32 位中工作 要么全部在 64 位中工作 正确的结构是什么 1 32 dll 我尝试了以上两种方法 但没有成功调用32 dll 我不太了解您所指的代理 CO
  • 获取自动热键中的可用屏幕区域

    我正在尝试编写一些简单的 AutoHotkey 脚本来移动窗口 但在获取正确的屏幕尺寸值时遇到问题 我试图获取屏幕上可用区域的大小 通常是全屏分辨率减去任务栏 也许还有任何其他停靠窗口 如 Vista 中的侧边栏 我发现的获取屏幕宽度的方法

随机推荐

  • 如何测试需要jquery的ES6类?

    我有一个需要 jquery 的 ES6 模块 import from jquery export class Weather Constructor for Weather class param latitude param longit
  • 是否可以使用 python 安装 msi?

    是否可以用 python 编写一个安装 msi 的脚本 或者 是否可以通过任何其他脚本来实现 您可以使用过时的操作系统 http docs python org library os html highlight os system os
  • 应用程序获得 Amazon AppStore 批准需要多长时间? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 申请被审查的平均时间是多少亚马逊应用商店 https developer amazon com 小型 无争议 优质的应用程序 在 Android 市场
  • ASP.NET MVC3 和 Facebook 集成

    我正要使用 MVC3 启动一个新的 ASP NET 项目 并且由于一些要求与 facebook 集成有关 因此我需要您就以下问题提供建议 1 是否可以将我的会员用户连接到他们的 Facebook 帐户 以便每当用户在我的网站上分享 添加 评
  • 有没有办法在 Android 中定义 EditText 的最小值和最大值?

    我想定义一个最小值和最大值EditText 例如 如果有人尝试在其中输入月份值 则该值必须在 1 12 之间 我可以通过使用来做到这一点TextWatcher但我想知道是否有其他方法可以在布局文件或其他地方执行此操作 编辑 我不想限制字符数
  • Java中的char和Character有什么区别?

    我需要知道Java中的char和Character有什么区别 因为当我编写java程序时 char可以工作 而Character却不起作用 char 是表示单个 16 位 Unicode 字符的原始类型 而 Character 是一个包装类
  • 如何正确使用UrlEncode和Decode

    所以我有一个文件要上传到 azure blob 存储 C 测试文件夹 A B testfile txt 以及两个扩展方法 可帮助对我的路径进行编码 以确保为其提供有效的 azure 存储 blob 名称 public static stri
  • 旋转 glViewport?

    在 多点触控 环境中 表面上显示的任何应用程序都可以根据用户的方向旋转 缩放 实际的解决方案是在 FBO 上绘制应用程序 并绘制一个带有纹理的旋转 缩放的矩形 我认为这对性能没有好处 而且所有显卡都不提供FBO 这个想法是沿着用户的方向裁剪
  • 如何获取MASM中当前光标位置

    我正在编写一个智商测试生成程序 其中我必须随机生成包括言语非言语问题的问题 为了生成非语言问题 我想显示其中字母和字母以圆形或三角形出现的问题 但我不知道如何定位它们 例如 在非语言问题中 我想通过编写以下代码将字母和数字放置在三角形中 m
  • 虚拟继承中应该写“public virtual”还是“virtual public”?

    基于http en wikipedia org wiki Virtual inheritance http en wikipedia org wiki Virtual inheritance class Animal Two classes
  • 使用 Django Rest 框架中定义的 mixins 类

    Mixins类的实际用途是什么 我实在不明白 所有 mixins 类 如 CreateModelmixin Listmixin 等功能 都已在基于类的视图 如 ListCreateApiView 中可用 For eg class Examp
  • 从 Firestore 文档中嵌套的集合获取数据的最佳方法是什么?

    我正在浏览 Firestore 文档和指南 我下面的代码示例使用 AngularFire2 让我们考虑一个类似于此处提供的示例的 聊天 集合 https firebase google com docs firestore manage d
  • Python只保留列表中的字母数字单词

    我有一个类似于以下的单词列表 mylist hi h ello how re you list 我想提取所有非字母数字字符以给出如下结果 h ello how re list 请注意 我在现实生活中有一个更长的列表 它包含一些非字母数字实例
  • 如何使用 MS HPC Server 2008 R2 的 MPI 堆栈成功编译 mpi4py?

    故事是这样的 我需要一个 Python 的 MPI 包装器 我知道有mpi4py http code google com p mpi4py 对于当前的工作 我 大部分 使用 Python 和 Windows 我想使用 Microsoft
  • 使用bolthold 3条件进行boltDB查询

    所以我有这个问题 https stackoverflow com questions 72058075 go boltdb query using bolthold之前 我在问题下面有一个有效的答案 但我刚刚意识到我提出的查询没有按计划工作
  • 有没有办法调试 v8 堆之外发生的内存泄漏

    我有一个在 NodeJS 上运行的生产应用程序 它提供了大量的流量 虽然部署后一切顺利 但性能在几个小时后开始下降 我们在 newrelic 上注意到 NodeJS 的非堆内存持续稳定增长 而 V8 堆内存则保持稳定 我们尝试使用 Chro
  • Xampp 上的 Symfony 开发速度非常慢,我该怎么办?

    我已经设置了 Symfony 但每个页面加载需要 40 秒 如果我有一个空控制器 则加载需要 8 秒 如果我开始对数据库进行一些复杂的查询 情况会更糟 我能做些什么 停用分析器 这会改变很多吗 在开发模式下激活 APC 但是这不会成为更改代
  • Rails open-uri 在路径上中断

    我正在尝试使用 open uri 获取 url 我的代码非常简单 url open http localhost 3000 descriptions return render text gt url to json 当我运行此代码时 出现
  • 我可以在 PowerShell 脚本中禁用选择模式吗?

    PowerShell 默认情况下 当您在 PowerShell 控制台内单击时 PowerShell 会进入 选择模式 并暂停脚本 直到您按空格键 输入键或转义键 我有一个无限循环的脚本while true 它应该始终运行 当有人意外单击
  • 使用 WinHttp.WinHttpRequest 查找检索到的二进制数据的大小

    我最近意识到 URLDownloadToFile 使用 IE 代理设置 所以我正在寻找替代方案 发现 WinHttp WinHttpRequest 可能有效 ResponseBody 属性似乎包含获取的数据 我需要将其写入文件 问题是我找不