通过ShellExecute调用谷歌地图URL启动Chrome时触发STATUS_STACK_BUFFER_OVERRUN错误的问题求助
通过ShellExecute调用谷歌地图URL启动Chrome时触发STATUS_STACK_BUFFER_OVERRUN错误的问题求助
各位大佬好,我遇到了一个挺头疼的问题,想过来请教下大家:
我在自己的应用里做了个小功能——用户点击按钮就能将指定地址映射为地图页面。实现逻辑很简单:拼接好对应的地图URL,然后调用Shell32.dll里的ShellExecute函数来打开浏览器。举个例子,我拼接出来的URL大概是这样的:https://www.google.com/maps/place/8000+Avalon+Blvd,+Alpharetta,+GA+30009
之前用Chrome的时候这个功能一直正常,但昨天我发现它彻底失效了:不仅地图页面加载失败,还直接导致Chrome崩溃,弹出错误提示 Error code: STATUS_STACK_BUFFER_OVERRUN。崩溃之后,哪怕我手动输入ibm.com这类简单网址,Chrome都没法正常加载页面。
不过奇怪的是,如果我把程序里最初生成的URL(去掉Chrome或谷歌地图自动附加的GPS坐标之类的额外内容)复制下来,关闭Chrome后重新打开,再粘贴这个URL进去,就能正常访问地图页面。我反复确认过,程序调用的URL和我手动粘贴的完全一致——手动操作没问题,用ShellExecute调用就失败。
我还做了几个测试:
- 把默认浏览器换成Bing后,同样的
ShellExecute调用逻辑完全正常; - 如果Chrome本来就在运行状态,调用这个功能是正常的;只有当需要通过这个操作启动Chrome时,才会触发崩溃错误。
有没有大佬知道这是怎么回事?为什么ShellExecute调用会出现这种问题,而且只针对Chrome(目前还没测试Firefox等其他浏览器)?
备注:内容来源于stack exchange,提问作者Russell
相关产品推荐
相关产品推荐

