gpt4 book ai didi

visual-c++ - 如何将 IWinHttpRequest 导入 MSVC++ 项目?

转载 作者:行者123 更新时间:2023-12-02 00:05:01 24 4
gpt4 key购买 nike

我一直在查看 Microsoft 在 COM 上使用 WinHTTP 的示例代码,请参阅:https://learn.microsoft.com/en-us/windows/win32/winhttp/iwinhttprequest-open

前几行代码如下:

#include <windows.h>
#include <stdio.h>
#include <objbase.h>

#include "httprequest.h"

#pragma comment(lib, "ole32.lib")
#pragma comment(lib, "oleaut32.lib")

// IID for IWinHttpRequest.
const IID IID_IWinHttpRequest =
{
0x06f29373,
0x5c5a,
0x4b54,
{0xb0, 0x25, 0x6e, 0xf1, 0xbf, 0x8a, 0xbf, 0x0e}
};

int main()
{
// Variable for return value
HRESULT hr;

// Initialize COM
hr = CoInitialize( NULL );

IWinHttpRequest * pIWinHttpRequest = NULL;

我对 #include IWinHttpRequest 类型的正确方法感到困惑。我认为它来自 httprequest.h 文件,该文件不是系统包含文件。

另外,我猜httprequest.h是编译httprequest.idl的结果。我应该手动编译 httprequest.idl,还是因为这是 Windows SDK 的一部分,是否有更好的方法来访问此类型?

最佳答案

只是缺少有关如何获取 httprequest.h 文件的说明。 Windows SDK 只有 .idl 文件。这有点不寻常,许多 Windows API 都有 .idl 和 .h,有些只有 .h,有些只有 .idl ...但是您可以从 .idl 创建 .h:

这是一个示例输出:

**********************************************************************
** Visual Studio 2019 Developer Command Prompt v16.5.1
** Copyright (c) 2019 Microsoft Corporation
**********************************************************************

C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional>midl httprequest.idl /out D:\MyPath\MyAppDir
Microsoft (R) 32b/64b MIDL Compiler Version 8.01.0622
Copyright (c) Microsoft Corporation. All rights reserved.
Processing C:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\um\httprequest.idl
httprequest.idl
Processing C:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\um\oaidl.idl
oaidl.idl
Processing C:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\um\objidl.idl
objidl.idl
Processing C:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\um\unknwn.idl
unknwn.idl
Processing C:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\shared\wtypes.idl
wtypes.idl
Processing C:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\shared\wtypesbase.idl
wtypesbase.idl
Processing C:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\shared\basetsd.h
basetsd.h
Processing C:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\shared\guiddef.h
guiddef.h
Processing C:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\um\oaidl.acf
oaidl.acf

它将在您的项目目录中创建 3 个文件:httprequest.hhttprequest.tlbhttprequest_i.c

现在您应该可以编译示例代码了。请注意,如果您包含 httprequest_i.c 文件,您甚至可以删除示例中 IID_IWinHttpRequest 的手动声明。

关于visual-c++ - 如何将 IWinHttpRequest 导入 MSVC++ 项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60914124/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com