Windows下ShellExcute或者SHOpenFolderAndSelectItems 使用explorer.exe可能失败

在C++代码 中使用Explorer.exe打开 一个文件所在目录的功能有如下两种 办法

一、使用ShellExcute

ShellExecute(NULL,NULL,explorerPath.c_str(),"select,C:\abc\a.cpp",NULL,SW_HIDE);

二、使用Win32API

void BrowseToFile(LPCTSTR filename)
{
    ITEMIDLIST *pidl = ILCreateFromPath(filename);
    if(pidl) {
        SHOpenFolderAndSelectItems(pidl,0,0,0);
        ILFree(pidl);
    }
}
两种 办法都使用后,我都失败了~ 

奇怪的是我在ProcessMonitor中发现了ShellExcute 创建的进程,但是目录并没有打开。也就说这个功能失效了。

我查看了一下MSDN的文档。

Remarks

CoInitialize or CoInitializeEx must be called before using SHOpenFolderAndSelectItems. Not doing so causes SHOpenFolderAndSelectItems to fail.


果断加上COM初始化的这句代码,调用成功了。调用成功后不要忘记CoUnInitialize 。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值