C++选择文件打开方式的函数

最近让同事给UE4一个功能,识别出 .ts、.json文件,然后双击这些文件可以直接打开。

默认双击 .json 时,调用 Windows 自带的记事本打开文件,不习惯,想着能否像右键菜单一样选择用哪个应用程序打开,比如我指定Visual Studio Code 或者 Sublime Text。

图片也类似,默认不用系统自带的,比如我安装的其它浏览图片工具(如下图的 ImageGlass)

C++选择文件打开方式的函数

这个效果是”Open With’,而不是’Open’

代码也比较简单,就是调用 SHOpenWithDialog 函数。

#include
#include
#include

int main()
{
    //std::cout << "Hello World!\n";

    //reference : https://stackoverflow.com/questions/18326507/how-to-get-command-line-of-windows-open-with-function
    OPENASINFO info = {0};
    info.pcszFile = L"C:\\Users\\xx\\Desktop\\test.png";
    info.pcszClass = NULL;
    info.oaifInFlags = OAIF_ALLOW_REGISTRATION | OAIF_EXEC;

    SHOpenWithDialog(NULL, &info);

    return 0;
}

Original: https://www.cnblogs.com/meteoric_cry/p/15350176.html
Author: meteoric_cry
Title: C++选择文件打开方式的函数

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/535540/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • C++中 线程函数为静态函数 及 类成员函数作为回调函数

    线程函数为静态函数: 线程控制函数和是不是静态函数没关系,静态函数是在构造中分配的地址空间,只有在析构时才释放也就是全局的东西,不管线程是否运行,静态函数的地址是不变的,并不在线程…

    C++ 2023年5月29日
    064
  • Cannot find a C++ compiler that supports both C++11 and the specified C++ flags.

    Linux 安装 cmake 时候出现的问题,解决方法: yum install gcc-c++ Original: https://www.cnblogs.com/hunttow…

    C++ 2023年5月29日
    056
  • 2022年十三届蓝桥杯国赛将至,来看看去年蓝桥杯C++b组国赛题目如何

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    C++ 2023年5月29日
    062
  • c++ set与unordered set的区别

    c++ std中set与unordered_set区别和map与unordered_map区别类似,其底层的数据结构说明如下: 1、set基于红黑树实现,红黑树具有自动排序的功能,…

    C++ 2023年5月29日
    051
  • C++20新特性

    conceptrequiresconstinitconstevalco_awaitco_returnco_yieldchar8_t 优点:1)没有头文件;2)声明实现仍然可分离, …

    C++ 2023年5月29日
    069
  • [C++] new和delete运算符使用方法

    new 和 delete 是C++语言中的两个运算符,配套使用。 new:用于分配内存,与C语言中的 malloc 相同,分配在堆内存 delete:用于释放内存,与C语言中的 f…

    C++ 2023年5月29日
    058
  • Google C++ 单元测试 GTest

    from : http://www.cnblogs.com/jycboy/p/6057677.html 一、设置一个新的测试项目 在用google test写测试项目之前,需要先编…

    C++ 2023年5月29日
    038
  • C++11 静态断言 static_assert

    我们知道,C++现有的标准中就有assert、#error两个方法是用来检查错误的,除此而外还有一些第三方的静态断言实现。 assert是运行期断言,它用来发现运行期间的错误,不能…

    C++ 2023年5月29日
    048
  • Windows下pip安装包报错:Microsoft Visual C++ 9.0 is required Unable to find vcvarsall.bat

    在windows下使用pip安装包的时候提示报错:Microsoft Visual C++ 9.0 is required (Unable to find vcvarsall.ba…

    C++ 2023年5月29日
    084
  • C++内存分配方式详解——堆、栈、自由存储区、全局/静态存储区和常量存储区

    栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区。里面的变量通常是局部变量、函数参数等。在一个进程中,位于用户虚拟地址空间顶部的是用户栈,编译器用它来实现…

    C++ 2023年5月29日
    071
  • ProtoBuf3 C++使用篇

    protobuf 是用于结构化数据串行化的灵活、高效、自动化的解决方案。又如 XML,不过它更小、更快、也更简单。你只需要按照你想要的数据存储格式编写一个.proto,然后使用生成…

    C++ 2023年5月29日
    055
  • c++ typedef和#define的作用范围

    typedef: 如果放在所有函数之外,它的作用域就是从它定义开始直到文件尾; 如果放在某个函数内,定义域就是从定义开始直到该函数结尾; #define: 不管是在某个函数内,还是…

    C++ 2023年5月29日
    099
  • C++ 知识点

    知识点 说明 所谓的引用就是给变量取一个别名,使一块内存空间可以通过几个变量名来访问。声明引用类型的变量需要在变量名前加上符号&,并且必须指定初值,即被引用的变量。 C++…

    C++ 2023年5月29日
    051
  • C++ 模板类相关问题

    1.模板类中的函数定义与实现必须全部写在头文件中 C++中每一个对象所占用的空间大小,是在编译的时候就确定的,在模板类没有真正的被使用之前,编译器是无法知道,模板类中使用模板类型的…

    C++ 2023年5月29日
    051
  • C+++string类如何判断字符串为空

    string类是C++STL类之一,有很丰富的接口。 string类为空,实际也就是元素为0个。 可以按照如下方式判断: 1、string类有自己的成员函数empty, 可以用来判…

    C++ 2023年5月29日
    066
  • C++ lambda 用法

    为什么要使用lambda 就地匿名的定义一个目标函数或者函数对象,不需要额外的再写一个命名函数或者函数对象,以更直接的方式去写函数,可以调高程序的可读性和可维护性。 简洁:不要额外…

    C++ 2023年5月29日
    065
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球