gpt4 book ai didi

c++ - 使用 ShellExecute C++ 打开长 url

转载 作者:可可西里 更新时间:2023-11-01 10:42:15 26 4
gpt4 key购买 nike

我正在尝试使用 ShellExecute() 打开一个 url .该 url 是由我的程序为长 http get 请求生成的,并且 ShellExecute()不工作,不显示任何回应。

    ShellExecute(NULL, _T("open"), url, NULL, NULL, SW_SHOWNORMAL); // Does nothing when url is too long

比起我为同一个命令写了一个批处理文件,当 url 长度大于 259 个字符时,它会显示这个错误:

start "" "{mywebsite}/&&&&..." // Repeating &


Windows cannot find
'{my-url}/{long-get-request} ....
Make sure you typed the name correctly, and then try again.

关于扩展 ShellExecute() 的字符限制的想法?或者,除了 ShellExecute() 之外,打开一个长 url 可能是一个很酷的解决方案。或 system()System::Diagnostics::Process::Start() , 它们都无法工作。

最佳答案

将链接复制到 *.html 文件的建议将起作用,但是 ShellExecute 将运行与 *.html 关联的程序,而不是 http:。理论上,这些关联可以不同。如果你不在乎,那么只要找到与*.html的关联,然后使用CreateProcess如下:

std::wstring url = L"http://localhost/fake.php?123";
wchar_t buf[MAX_PATH] = { 0 };
DWORD size = _countof(buf);
AssocQueryString(0, ASSOCSTR_EXECUTABLE, L".html", 0, &buf[0], &size);
std::wstring cmd(buf);
cmd += L" ";
cmd += url;
PROCESS_INFORMATION pi;
STARTUPINFO si{ sizeof(si) };
CreateProcess(0, &cmd[0], 0, 0, FALSE, NORMAL_PRIORITY_CLASS, 0, 0, &si, &pi);
...

在 Windows 10 中,ShellExecute 接受大参数行。

关于c++ - 使用 ShellExecute C++ 打开长 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46665843/

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