gpt4 book ai didi

C++ SHGetFolderPath 问题

转载 作者:行者123 更新时间:2023-11-28 03:34:29 26 4
gpt4 key购买 nike

我正在尝试获取本地“程序文件”目录路径并向其附加一些额外路径并简单地执行它。无法让它正常工作..

这是我当前的代码:

wchar_t* localAppData = 0;
SHGetFolderPath(NULL, CSIDL_PROGRAM_FILESX86, 0, NULL, &localAppData);

wstringstream ss;
ss << localAppData << L"/MyApp/MyExe.exe";

CreateProcess(static_cast<void*>(localAppData));

我正在为 SHGetFolderPath 获取这个:

cannot convert parameter 5 from wchar_t ** to LPWSTR

另外,即使我在 header 中包含了 sstream,我还是收到了这些错误:

'wstringstream' : undeclared identifier

注意:我正在使用 SHGetFolderPath,因为我需要它在 XP 和 Vista/7 上工作

编辑:

上面的代码有一个错误,我试图运行 localAppData,它是“Program Files”目录的路径,而不是运行整个路径。

但是当我尝试在 CreateProcess 函数中使用 ss var 而不是 localAppData var 时,我收到有关使用var 类型错误(需要使用 LPCWSTR)。

但是当我尝试这个时,效果不佳。没有错误,但应用程序没有运行,我错过了什么?

wchar_t localAppData[MAX_PATH];
STARTUPINFO sInfo;
PROCESS_INFORMATION pInfo;
SHGetFolderPath(NULL, CSIDL_PROGRAM_FILESX86, 0, NULL, localAppData);

std::wstringstream ss;
ss << localAppData << L"/MyApp/MyExe.exe";
LPCWSTR str = ss.str().c_str();
CreateProcess(str, NULL,NULL, NULL,FALSE,NULL,NULL,NULL,&sInfo,&pInfo);
return str;

有什么想法吗?

最佳答案

wchar_t localAppData[MAX_PATH];SHGetFolderPath(NULL, CSIDL_PROGRAM_FILESX86, 0, NULL, localAppData);std::wstringstream ss;
  1. SHGetFolderPath 需要指向调用者分配数组的指针,并用结果路径填充它。

  2. 不要忘记 std 命名空间。

关于C++ SHGetFolderPath 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11451435/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com