-2

我正在尝试从变量构建地址。所以我可以将它传递给WinHttpOpenRequest.

    char *uNameAddr = (char*) ExeBaseAddress + 0x34F01C;
    printf("%s \n", uNameAddr);

    string url = "http://xxxx.xxxx.com/xxxx/?u=";
    string username = uNameAddr;


    string combine = url + username;

    cout << combine << endl;
    //http://xxxx.xxxx.com/xxxx/?u=MyUsername <--

    URL_COMPONENTS urlComp;
    LPCWSTR pwszUrl1 = (LPCWSTR)combine.c_str();
    DWORD dwUrlLen = 0;

然后我必须在这里传递它:

hRequest = WinHttpOpenRequest( hConnect, L"GET", urlComp.lpszUrlPath,
                               NULL, WINHTTP_NO_REFERER,
                               WINHTTP_DEFAULT_ACCEPT_TYPES,
                               0);

urlComp.lpszUrlPath应该http://xxxx.xxxx.com/xxxx/?u=MyUsername

有什么建议吗?我的应用程序在处理该部分时崩溃。


错误

 12006       ERROR_INTERNET_UNRECOGNIZED_SCHEME
             The URL scheme could not be recognized or is not supported.
4

1 回答 1

2
LPCWSTR pwszUrl1 = (LPCWSTR)combine.c_str();

std::string::c_str返回const char *LPCWSTRconst wchar_t *

转换为LPCWSTR对编译器和你自己撒谎,combine.c_str()返回的不是指向宽字符串的指针。

std::wstring使用表示宽字符串可能会取得更好的成功。

考虑阅读Windows API 中的 Unicode 以获取更多信息。

于 2013-04-18T07:47:33.793 回答