从 C++ 扩展中获取 MIME 类型

2023-12-07

有什么方法可以在给定文件扩展名的情况下获取 C++ 中的 MIME 类型吗?

我读过有关 HKEY_CLASSES_ROOT 的内容,但老实说我不知道​​如何使用它。

我想要的是作为输入:

 string extension=".pdf"; 
 string extension2=".avi";

获取输出:

字符串 mimeType="application/pdf";
字符串 mimeType2="video/x-msvideo";

我知道我可以自己做到这一点,但我想这里已经完成了一些工作。

多谢


最简单的解决方案是调用FindMimeFromData:

#include <urlmon.h>
#pragma comment( lib, "urlmon" )

std::wstring MimeTypeFromString( const std::wstring& str ) {

    LPWSTR pwzMimeOut = NULL;
    HRESULT hr = FindMimeFromData( NULL, str.c_str(), NULL, 0,
                                   NULL, FMFD_URLASFILENAME, &pwzMimeOut, 0x0 );
    if ( SUCCEEDED( hr ) ) {
        std::wstring strResult( pwzMimeOut );
        // Despite the documentation stating to call operator delete, the
        // returned string must be cleaned up using CoTaskMemFree
        CoTaskMemFree( pwzMimeOut );
        return strResult;
    }

    return L"";
}

以下应用

int _tmain( int argc, _TCHAR* argv[] ) {
    std::wcout << L".pdf: " << MimeTypeFromString( L".pdf" ) << std::endl;
    std::wcout << L".avi: " << MimeTypeFromString( L".avi" ) << std::endl;

    return 0;
}

在我的系统上产生以下输出:

.pdf: application/pdf
.avi: video/avi
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 C++ 扩展中获取 MIME 类型 的相关文章

  • 在 C# 中实例化 python 类

    我已经用 python 编写了一个类 我想通过 IronPython 将其包装到 net 程序集中 并在 C 应用程序中实例化 我已将该类迁移到 IronPython 创建了一个库程序集并引用了它 现在 我如何真正获得该类的实例 该类看起来
  • System.MissingMethodException:找不到方法?

    以前工作的 ASP NET WebForms 应用程序现在抛出此错误 System MissingMethodException 找不到方法 The DoThis方法位于同一个类上 它应该可以工作 我有一个这样的通用处理程序 public
  • 根据另一个列表的内容对列表进行排序

    我有一个包含整数列表的列表和另一个包含同时包含整数和字符串的类的列表 我想做的是按字母顺序对列表进行排序 将第一个列表中存在的条目放在前面 这是我的代码和预期输出 using System using System Collections
  • .NET 进程分配的内存何时释放回 Windows

    设置 NET 在启动时以及在收集后尝试满足分配请求时 分段为每一代的堆 0 1 2 LOH 分配内存 以获得连续的内存块 为每个堆分配的内存可能会随着应用程序 预热 而趋于平稳 但第 2 代和大型对象堆可能除外 在垃圾收集期间 每个堆 0
  • 实体框架 5 不清除导航属性

    我在 Entity Framework 5 中遇到了这个奇怪的问题 我在其中一个实体中有一个导航属性 我想将其设置为null 但由于某种原因 该属性只有在我第二次调用该属性时才会被清除 using var db new Entities v
  • 使用 std::string 导致 Windows“找不到入口点”[重复]

    这个问题在这里已经有答案了 当我用 G C C 编译它时 include
  • 将 Uploadify 与 Sharepoint 和 .net 结合使用

    我在共享点页面上有一些由 JQuery 生成的 html 我想在这个 html 中使用 uploadify 将文件上传到服务器 亚历山大 https stackoverflow com users 25427 alexander gyosh
  • 如何在Qt无框窗口中实现QSizeGrip?

    如何使用 Qt 无框窗口实现 QSizeGrip 代码会是什么样的 您只需在布局内窗口的一角添加 QSizeGrip 即可使其保持在该角落 QDialog dialog new QDialog 0 Qt FramelessWindowHin
  • 如何在 asp .net mvc 2 中对不直接属于我的模型的对象使用 DisplayFor()?

    我确信我在这里遗漏了一些非常简单的东西 我创建了一个自定义日期时间显示模板 使用以下方法时效果很好 但是 我遇到了这样的情况 在部分控件内 我在 for 循环中迭代模型中的对象 我想要一个 DateTime 属性来使用显示模板 但我不知道如
  • 我需要一个树转储选项,该选项在当前的 gcc 版本中不再存在

    旧版本的 GCC 例如 4 0 2 或 4 1 2 有该选项 df see 用于调试程序或 GCC 的选项对于4 1 2 http gcc gnu org onlinedocs gcc 4 1 2 gcc Debugging Options
  • C# 列表框 ObservableCollection

    我正在尝试使用 ListBox DataSource ObservableCollection 但是我不知道如何在 OC 更新时让列表框自动更新 我可以在 OC 上挂接 CollectionChanged 事件 但是我需要对列表框执行什么操
  • 如何解决素数函数的大O表示法?

    我正在尝试理解 Big O 表示法 很抱歉 如果我问的问题太明显了 但我似乎无法理解这一点 我有以下 C 代码函数 我正在尝试为其计算 Big O 表示法 for i 2 i lt 100 i for j 2 j lt i j j if i
  • 接口中的私有成员

    是否可以在 NET 接口中创建私有成员 我听说现在可以了 但我的 IDE 拒绝了 public interface IAnimal void SetDefaultName string name ChangeName name privat
  • 如何在单独的类库中管理客户端上下文对象?

    我正在尝试创建一个库 类库 对于共享点 它将拥有所有共享点 dll 来与共享点服务器交互上传文件 文档并创建文档库和文档集 现在这个库可以被使用客户端 例如 Web 应用程序 asp net webform 或 mvc 或控制台应用程序或
  • 为什么 C# 编译的正则表达式比等效的字符串方法更快?

    每次我必须对字符串执行简单的包含或替换操作 其中我正在搜索的术语是固定值 时 我发现如果我获取示例输入并对其进行一些分析 则使用编译的正则表达式是几乎 总是比使用 String 类中的等效方法更快 我尝试过比较多种方法 hs是要搜索的 干草
  • XPath 选择具有特定属性值的元素?

    我在使用 XPath 选择节点时遇到问题 我将展示一个示例 由于实际数据量很大 xml 文件被缩短了 这是 XML 的子集
  • 当“多次安装 MSBuild”时,Dotnet 项目转换尝试转换失败

    try convert w Test csproj target framework netstandard2 0 结果是 Multiple installs of MSBuild detected please select one In
  • Cuda:最小二乘求解,速度较差

    最近 我使用Cuda编写了一个名为 正交匹配追踪 的算法 在我丑陋的 Cuda 代码中 整个迭代需要 60 秒 而 Eigen lib 只需 3 秒 在我的代码中 矩阵 A 是 640 1024 y 是 640 1 在每一步中 我从 A 中
  • Python 中的 C 指针算术

    我正在尝试将一个简单的 C 程序转换为 Python 但由于我对 C 和 Python 都一无所知 这对我来说很困难 我被 C 指针困住了 有一个函数采用 unsigned long int 指针并将其值添加到 while 循环中的某些变量
  • 构建 OpenCV 时出错 :: MonitorFromRect 未在此范围内声明

    我试图建立OpenCV version 2 4 8与它一起使用CodeBlocks and MinGw 我按照以下指示进行操作here http kevinhughes ca tutorials opencv install on wind

随机推荐

  • C++ 空括号成员初始化 - 将内存清零?

    我最初写了一些这样的代码 class Foo public Foo m buffer private char m buffer 1024 比我聪明的人说使用 m buffer 初始化器会将内存清零 我的目的是让内存保持未初始化状态 我没有
  • 将 Unicode 转义符转换为希伯来语文本

    我的 json 文件中有以下文本 u00d7 u0090 u00d7 u0097 u00d7 u0095 u00d7 u0096 u00d7 u00aa u00d7 u00a4 u00d7 u0095 u00d7 u009c u00d7 u
  • 将大量 CSV 文件导入 Matlab

    我有一个 1 6 GB 大的 CSV 文件 需要将其输入到 matlab 中 我必须经常这样做 并且需要它快速运行 该文件的格式为 20111205 00 00 2 99 18 6 E 20111205 00 00 2 99 18 5 E
  • 通过 iPhone 应用程序拨打电话号码

    嗨 iPhone 开发者 我想在我的 iPhone 应用程序中添加一个功能 它们是 拨打我的应用程序中的电话号码 通话结束后 重新启动之前的应用程序 我知道它在 iphone OS 3 2 中不可能 iOS 4 中可以吗 我需要你的帮助 你
  • 流中记录的排序

    以下是我的一些疑问 我有两个不同的流stream1 and stream2其中元素是有序的 1 现在当我这样做时keyBy在每个流上 顺序会保持不变吗 因为这里的每个组都只会发送给一个任务管理器 我的理解是记录将按小组顺序排列 请在这里纠正
  • 传单中圆形和多边形的联合

    我正在向传单地图添加两个圆圈和一个多边形 这是我绘制这三个形状的代码 有什么办法可以得到这三个形状的联合吗 leaflet options leafletOptions minZoom 0 maxZoom 18 m lt leaflet g
  • 如何在没有宏的情况下自动创建 Clojure `defn` 函数?

    最初是出于以下问题的动机 映射到 clojurescript 宏的调用 假设您想自动创建许多类似的函数 即不需要全部手写 假设我们有一些预先存在的函数 并且希望用处理程序包装它们以进行某种回调 defn do foo println I f
  • decltype 和成员函数(非指针)类型

    struct C int Foo int i return i typedef decltype C Foo type 由于不存在成员函数类型这样的类型 没有 是吗 我希望C type to be int int 但以下内容无法使用 Vis
  • Flex:无法调整外部加载的 SWF 内容的大小

    我有一个应用程序 我尝试加载外部 SWF 所以 我们有 我的应用 舞台的尺寸为 768x1280 缩放模式 EXACT FIT 外部 SWF 这是另一个应用程序 其阶段为 800x600 缩放模式 EXACT FIT 问题是 尽管我应用 s
  • Tomcat 未加载 MSSQL 驱动程序

    我正在尝试将我的 web 应用程序部署到 Tomcat 容器 但出现异常 指出找不到数据库的驱动程序 我在 Jetty 上本地测试了该应用程序 driver jar 由 Maven 提供 我将 driver jar 复制到 Tomcat 主
  • 将 (720, 720) 的 pandas DataFrame 重塑为 (518400, ) 2D 为 1D

    我有一个形状为 720 720 2D 的 DataFrame 我想将其转换为一维维度而不更改其值 我该如何使用 Pandas 来做到这一点 Use numpy ravel将 DataFrame 转换为 numpy 数组 np random
  • 未捕获的类型错误:无法读取 ReactJs 中 {Component}.render 处未定义的属性“映射”

    我将我的数组传递给这样的侧边栏组件的道具 我想在我的子组件中访问它 When i save the code and go to browser i am getting this error message import React Co
  • 如何在java中创建类型安全的泛型数组?

    我想在 java 中创建一个通用数组 维护 Java 通常提供的类型安全性 我正在使用这段代码 class Stack
  • “of”与“from”运算符

    之间唯一的区别是Observable of and Observable from参数格式 像Function prototype call and Function prototype apply Observable of 1 2 3
  • 1帧内使用opengl es在ipad上最多可以绘制多少个三角形?

    ipad上一帧最多可以画多少个三角形 另外 用于绘制这些三角形的 gl 调用数量是否有限制 您在 iPad 上遇到的三角形总数的唯一限制是内存大小以及您希望渲染的速度 发送的顶点越多 应用程序将使用的内存就越多 渲染速度就越慢 例如 在我的
  • utf8' 编解码器无法解码位置 15 中的字节 0x89:起始字节无效

    这是我的项目的视图 其中我尝试使用 boto 将图像从本地系统上传到 s3 class ImageList generics ListCreateAPIView queryset Image objects all serializer c
  • 如何在gem5中启用ARM半主机?

    我尝试运行在 QEMU 上运行的半主机退出指令 mov r0 0x18 ldr r1 0x20026 svc 0x00123456 但是gem5似乎没有正确处理它并崩溃了 以下补丁将其添加到 baremetal py 但不添加到 fs py
  • jquery改变用户滚动的背景颜色

    jquery 是否有可能在用户向下滚动页面时背景动画从 50 白色变为 90 白色或其他 所以首先是颜色rgba 255 255 255 5 当用户滚动到颜色下方 210px 时become rgba 255 255 255 9 更新后的更
  • Darwin/MacOS 是否修改了 Bash?

    我想知道使用 Bash 内置命令的 Bash 脚本的可移植性 据我了解 每种 UNIX 风格都倾向于修改各种 UNIX 实用程序 但他们是否倾向于不理睬 Bash 和 Bash 内置函数呢 尤其是 MacOS 呢 据我所知 bash 在 M
  • 从 C++ 扩展中获取 MIME 类型

    有什么方法可以在给定文件扩展名的情况下获取 C 中的 MIME 类型吗 我读过有关 HKEY CLASSES ROOT 的内容 但老实说我不知道 如何使用它 我想要的是作为输入 string extension pdf string ext