我无法概括 ShellExecuteA 命令中的路径

问题描述 投票:0回答:1

如果我输入用户名,它就可以工作。但如果我像下面那样运行它,它就不会做任何事情。它应该可以在 Windows 10/11 上运行; 我也是初学者,希望能获得有关使用

ShellExecuteA
的任何信息。

ShellExecuteA(NULL, "open", "rundll32.exe", "\"C:\\Program Files\\Windows Photo Viewer\\PhotoViewer.dll\", ImageView_Fullscreen C:\\Users\\%USERNAME%\\Downloads\\[image name].png", NULL, SW_HIDE);

这应该在 Windows 图像查看器中打开所述图像。如果我输入我的实际用户名而不是

%USERNAME%
,就可以了。

就我的目的而言,我想制作一个 C++ 程序来下载照片(可以正常工作)然后打开它;

c++ winapi
1个回答
0
投票

您不能像您尝试那样直接在文件路径中使用环境变量。您必须先使用

ExpandEnvironmentStringsA()

但是,您确实不应该对涉及用户配置文件的任何文件路径进行硬编码,因为配置文件的实际根位置可能因系统而异。相反,您应该使用

SHGetFolderPath()
SHGetKnownFolderPath()
来获取根路径,然后根据需要附加到它。

© www.soinside.com 2019 - 2024. All rights reserved.