SHLoadIndirectString的返回值是一个错误代码

时间:2016-11-10 11:45:28

标签: c# c++ visual-studio windows-8 microsoft-metro

您好我一直在尝试使用相应应用的AppManifest.xml获取Metro应用的名称。了解SHLoadIndirectString可用于此目的。在手动检查其功能时,我无法获得结果资源。代码段如下所示。

#include <iostream>
using namespace std;
#include <Shlwapi.h>
int main(){
    LPWSTR output = L"";
    LPWSTR input = L"@{Microsoft.BingMaps_2.1.3230.2048_x64__8wekyb3d8bbwe?ms-resource://Microsoft.BingMaps/resources/AppDisplayName}";
    int result = SHLoadIndirectString(input, output, sizeof(output), NULL );
    cout<<output;
    return 0;
}

返回值“result”始终为负值(如果我正在更改app的输入字符串,则会更改)。请指导我的错误。感谢。

1 个答案:

答案 0 :(得分:1)

得到了正确的答案。

#include <iostream>

using namespace std;
#include <Shlwapi.h>
int main()
{
    PWSTR output = (PWSTR) malloc(sizeof(WCHAR)*256);


    PCWSTR input = L"@{C:\\Program Files\\WindowsApps\\Microsoft.BingMaps_2.1.3230.2048_x64__8wekyb3d8bbwe\\resources.pri?ms-resource://Microsoft.BingMaps/Resources/AppShortDisplayName}";
    int result = SHLoadIndirectString(input, output, 256, NULL );

    cout<<output;
    return 0;
}