ShellExecute命令在win10

时间:2016-06-27 06:14:44

标签: winapi visual-c++

我正在尝试使用shellexecute命令打开文件,我的代码是

ShellExecute(NULL,NULL,itemPath,NULL,NULL,SW_SHOW); 

ShellExecute(NULL,L"open",itemPath,NULL,NULL,SW_SHOW); 

我已经使用过这两种方式,但是当我给出文件夹的路径时,它会打开一个文件夹但是当我给出文件的完整指定路径时它不起作用。 如果我提供硬编码路径,例如

,还有一件事
ShellExecute(NULL,L"open",L"E:\\abc.xlsx",NULL,NULL,SW_SHOW);

打开此文件。任何人都可以解释它为什么会发生。

1 个答案:

答案 0 :(得分:2)

ShellExecute正常工作,可以在代码中找到缺陷。唯一有意义的解释是itemPath不是你想象的那样。如果它确实是一个指向包含L"E:\\abc.xlsx"的以空字符结尾的字符数组的指针,则ShellExecute将按预期运行。

您可以通过检查itemPath的内容来调试问题,以找出它真正包含的内容。如果您提供了MCVE,那么我们可以更具体地诊断问题。

最后,ShellExecute被弃用,主要是因为它没有提供报告失败条件的好方法。您应该使用ShellExecuteEx代替。