gpt4 book ai didi

c++ - 打开转义文件时出现意外行为 :///URL in IE

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

我可以向上帝发誓,下面的代码在一周前就可以正常工作。我可以这么说,因为我开发的软件依赖于它。

此代码块应该使用 IE 从本地硬盘打开 html 页面:

(这些字符串在我的实际示例中没有硬编码。它所做的是这样的——它转义到本地 html 文件的路径并在前面添加 file:///。)

LPCTSTR m_strBrowser = L"C:\\Program Files (x86)\\Internet Explorer\\iexplore.exe";
LPCTSTR addr2 = L"\"file:///C%3a%5cUsers%5cUserName%5cAppData%5cLocal%5cTemp%5cReport_View.htm\"";

ShellExecute(hMain, NULL, m_strBrowser, addr2, NULL, SW_SHOWNORMAL);

但是我今天测试得到的只是IE中的首页。

知道这里出了什么问题吗?

附言。 Report_View.htm 文件存在于文件系统中。PS2。如果我将转义后的 URL 复制并粘贴到 Chrome 或 FF 中,它就可以正常打开。

最佳答案

好吧,显然他们对 IE 进行了一些更改,现在文件协议(protocol) URL 不能再包含任意转义。根据我的经验,使其与 IE 一起工作的唯一方法是通过调用 UrlCreateFromPath 获取文件协议(protocol)路径。应用程序接口(interface):

//You get this path from Registry
LPCTSTR m_strBrowser = L"C:\\Program Files (x86)\\Internet Explorer\\iexplore.exe";

LPCTSTR addr2 = L"C:\\Users\\UserName\\AppData\\Local\\Temp\\Report_View.htm";

DWORD dwSz_buff_addr2 = INTERNET_MAX_URL_LENGTH;
TCHAR buff_addr2[INTERNET_MAX_URL_LENGTH];
if(SUCCEEDED(UrlCreateFromPath(addr2, buff_addr2, &dwSz_buff_addr2, NULL))
{
ShellExecute(hMain, NULL, m_strBrowser, buff_addr2, NULL, SW_SHOWNORMAL);
}

关于c++ - 打开转义文件时出现意外行为 :///URL in IE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17097944/

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