我試圖用ShellExecute()
打開一個URL。 該網址是由我的程序生成的一個很長的HTTP請求,並且ShellExecute()
不起作用並且沒有響應。使用ShellExecute C++打開長網址
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()
或system()
或System::Diagnostics::Process::Start()
以外,它們都無法工作。
你可以得到默認的網頁瀏覽器,並通過'CreateProcessW'直接執行它。命令行最多可以有32766個字符。在Windows 8+中,獲取默認Web瀏覽器的命令行模板的一種方法是調用['AssocQueryString'](https://msdn.microsoft.com/en-us/library/bb773471),其標誌值爲' ASSOCF_ISPROTOCOL'來獲取'ASSOCSTR_COMMAND'來「打開」「http」協議。您必須替換模板中的參數 - 例如該URL字符串被提取爲「%1」。 – eryksun