如果我输入用户名,它就可以工作。但如果我像下面那样运行它,它就不会做任何事情。它应该可以在 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++ 程序来下载照片(可以正常工作)然后打开它;
您不能像您尝试那样直接在文件路径中使用环境变量。您必须先使用
ExpandEnvironmentStringsA()
。
但是,您确实不应该对涉及用户配置文件的任何文件路径进行硬编码,因为配置文件的实际根位置可能因系统而异。相反,您应该使用
SHGetFolderPath()
或 SHGetKnownFolderPath()
来获取根路径,然后根据需要附加到它。