专栏首页逆向技术IFileDialog->FileOpenDlg使用

IFileDialog->FileOpenDlg使用

//初始化Com接口
	HRESULT hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE);
	if (SUCCEEDED(hr))
	{
		//创建pOpenFileDlg
		IFileDialog* pOpenFileDlg = NULL;
		hr = CoCreateInstance(CLSID_FileOpenDialog, NULL, CLSCTX_ALL, IID_IFileOpenDialog, reinterpret_cast<void**>(&pOpenFileDlg));
		if (SUCCEEDED(hr))
		{
			//显示打开对话框
			hr = pOpenFileDlg->Show(NULL);
			//从对话框中获取的文件路径抽象到IShellItem对象中
			if (SUCCEEDED(hr))
			{
				
				IShellItem* pItem = NULL;
				hr = pOpenFileDlg->GetResult(&pItem);
				//从抽象接口中获取名字
				if (SUCCEEDED(hr))
				{
					PWSTR pszFilePath = NULL;
					hr = pItem->GetDisplayName(SIGDN_FILESYSPATH, &pszFilePath);

					//获取成功则 pszFilePath就是对应的路径 ,下方写对应的代码即可。
					if (SUCCEEDED(hr))
					{
						m_edtFilePath = pszFilePath;
						UpdateData(FALSE);
						//释放抽象对象内存
						CoTaskMemFree(pszFilePath);
					}
					pItem->Release();
				}

			}
			pOpenFileDlg->Release();
		}
	}
	CoUninitialize();

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 使用pymysql(使用一)

    mysql> select * from leo; +------------+-----------+------+------+--------+ | ...

    hankleo
  • Composer 使用使用详解

    Composer 是 PHP 的一个包依赖管理工具。我们可以在项目中声明所依赖的外部工具库,Composer 会帮你安装这些依赖的库文件,有了它,我们就可以很轻...

    A梦多啦A
  • knative client 使用knative client 使用

    需要升级golang版本,有 errors.Is()方法的版本,我使用的1.15.2.

    solate
  • .NET WebAPI中使用Session使用

    今天做项目的时候因为需要编写一个短信验证码的接口我需要在我的后台.net webapi中存入我随机生成的短信验证码方便与前端传递过来的数据对比,所以决定使用s...

    追逐时光者
  • ModelSim 使用【三】使用技巧

    【注】本文为系列教程,使用同一个仿真代码,关注公众号“数字积木”,对话框回复“ modelsim_prj ”,即可获得。这是系列第三篇。

    数字积木
  • 在dropwizard中使用feign,使用hystrix

    前言 用惯了spring全家桶之后,试试dropwizard的Hello World也别有一帆风味。为了增强对外访问API的能力,需要引入open feign...

    Ryan-Miao
  • PowerDesigner使用教程|使用方法

    PowerDesigner安装方法: http://dev.firnow.com/course/3_program/java/javajs/20090908/...

    庞小明
  • grpc 使用流程、使用技巧

    1、通过maven插件编译出java stub类。 2、对于批量调用的场景,我们可以使用FutureStub,对于普通的业务类型RPC,我们应该使用Blocki...

    杉枫
  • 使用Kubernetes探针使用一二

    Kubernetes调度Pod到Kubernetes节点上,节点上的Kubelet运行Pod的容器。如果容器内进程终止运行(容器的主进程崩溃),Kubelet会...

    ucdream82
  • Memcached使用总结之:使用Pyt

    Python连接memcached的库有很多,处于简单以及高效的原则,最终选择了pymemcache,

    py3study
  • VUE中使用ElementUI messageBox的使用

    1 引入messageBox 插件 import {MessageBox} from ‘element-ui’ == 不同于一般插件在使用Vue.use()方法...

    跟着阿笨一起玩NET
  • geotrellis使用(五)使用scala操作Accumulo

        要想搞明白Geotrellis的数据处理情况,首先要弄清楚数据的存放,Geotrellis将数据存放在Accumulo中。     Accumulo是一...

    魏守峰
  • 使用 Excel 分析 CloudStack 使用记录

    注:本文最初由 David Nailey 在 Build a Cloud 博客上撰写。

    沈星繁
  • mybatis 使用tips - 使用多个参数

    执行如下命令: mvn -Dmybatis.generator.overwrite=true mybatis-generator:generate 可以使用my...

    千往
  • 何时使用Serverless,何时使用Kubernetes

    我经常被问到的一个问题是:我应该使用Serverless还是Kubernetes来构建云原生应用程序?两种计算选项都有利有弊,这取决于您的需求,您应该选择哪种选...

    February
  • 使用Excel分析CloudStack使用记录

    本文的内容最初由David Nailey在Build a Cloud博客上撰写。

    Sepmer Fi
  • [MySQL] 使用force index强制使用索引

    1.在测试一个按照时间的范围查询时,尽管增加了索引,发现使用不到索引,可以使用这个来强制使用索引

    陶士涵
  • Nuget的使用(下载和使用package)

    对于.NET(包括.NET Core),Microsoft支持的代码共享机制是NuGet,它定义了.NET程序包的创建,托管和使用方式,并为每个角色提供了工具。

    Centy Zhao
  • openssl使用-- 之 AES算法库使用

    无限之生

扫码关注云+社区

领取腾讯云代金券