ShellExecute crashes
ShellExecute crashes
我有一个程序在ShellExecute()
指令上崩溃了。如果我使用system()
方法,一切都很好,但我读到system()
是邪恶的…
我使用的是Visual Studio 2010 SP1.
这里是调用ShellExecute的函数
ATC_GENERIC_API void __cdecl atcGenericLaunchGAG()
{
HINSTANCE ret = ShellExecute( NULL, NULL, "MyExe.exe", NULL, "C:\Opt\", SW_SHOW );
if( int(ret) > 32 )
{
//OK
return;
}
//NOK
}
这是我的错误:
Unhandled exception at 0x640361c3 in Aneto Sol.exe: 0xC0000005: Access violation reading location 0x0ba29bb0.
调试器在这里中断:
void __cdecl operator delete(void* p)
{
#if !defined(_AFX_NO_DEBUG_CRT) && defined(_DEBUG)
_free_dbg(p, _NORMAL_BLOCK);
#else
free(p);
#endif
}
这是我的调用堆栈:
mfc100d.dll!operator delete(void * p) Line 347 + 0xc bytes C++
mfc100d.dll!operator delete[](void * p) Line 360 + 0x9 bytes C++
mfc100d.dll!CPlex::FreeDataChain() Line 43 + 0xf bytes C++
mfc100d.dll!CMapPtrToPtr::RemoveAll() Line 87 C++
mfc100d.dll!CMapPtrToPtr::FreeAssoc(CMapPtrToPtr::CAssoc * pAssoc) Line 147 C++
mfc100d.dll!CMapPtrToPtr::RemoveKey(void * key) Line 252 C++
mfc100d.dll!CHandleMap::RemoveHandle(void * h) Line 230 C++
是否有人已经有这种错误与ShellExecute或谁可以解释为什么ShellExecute崩溃像这样?谢谢你的帮助。
正如Cory Nelson所说,错误不在API本身,而是在MFC中。可能会有一个ShellExecute钩子导致你的应用程序崩溃。
我在一个MFC应用程序中也经历过类似的事情。它在我的笔记本电脑上工作,但在将代码移动到我的桌面后,它间歇性地崩溃了VS2008。看看ShellExecute的文档,似乎把NULL放到lpOperation不是那么安全,因为它会自动选择系统特定的操作。所以我使用_T("打开")作为操作,到目前为止它工作得很好。
p。我在资源管理器和url中打开路径。
在Windows 20xx, 21xx上,调用ShellExecute有问题。
我是Delphi程序员,因为WinXP我使用这样的语法:
ShellExecute(处理,"开放",PChar("abcd.pdf"),nil, nil, SW_SHOWNORMAL);
在默认PDF查看器中打开PDF文件。
这在WinXP, Win7和Win10 1809的主应用程序和dll中运行良好。
在Windows 10 20H2和21H1这个方法挂起主应用程序,如果ShellExecute是在DLL内。
我发现解决这个问题的方法是在 后面加两行ShellExecute(处理,"开放",PChar("abcd.pdf"),nil, nil, SW_SHOWNORMAL);
睡眠(1200)。
Application.ProcessMessages;
的问候M
- 是否可以将要"ShellExecute"的文件包含在 dll 中?如果是这样,"ShellExecute"中的文件位置应该是什么?
- ShellExecute(和ShellExecuteEx)对我的URL不做任何事情
- C Windows.h如何在Shellexecute中使用变量
- JNI getObjectClass crashes VM
- dll + boost + VS2015 + WinXP == crashes
- ShellExecute 中的 cmd 命令
- ShellExecute 返回成功,但不执行文件
- C++ - 使用 Windows Photo Viewer 使用 ShellExecute 打开图像
- 如何使用http:uri方案启动默认的Web浏览器并使用Shellexecute访问主页
- 浏览器中的ShellExecute url并不总是将焦点设置在浏览器上
- 如何调用 ShellExecute 以使用 C++ 打开具有特定程序的文件,而无需关联相同的文件扩展名
- ShellExecute in _beginthread
- 使用 ShellExecute c++ 打开长网址
- ShellExecute 以在 C++ 中打开.exe
- 将多个cmd.exe参数/参数传递给Shellexecute(ex)
- Cocos2d Firebase Admob crashes
- 如果我输入错误的 dos 命令,shellexecute 会给出正确的结果
- 为什么ShellExecute不能使用包含文件路径的LPCSTR变量
- 如何使用 CreateProcess 或 ShellExecute 来执行管道命令
- ShellExecute crashes