为什么我的应用程序在通过ShellExecute调用Excel 2016文件时崩溃?
最小例子:
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
int nRetCode = (int)ShellExecute(NULL, NULL, _T("c:\\temp\\MyExcel.xlsx"), NULL, NULL, SW_SHOWNORMAL);
}
来自事件查看器:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
<System>
<Provider Name="Application Error" />
<EventID Qualifiers="0">1000</EventID>
<Level>2</Level>
<Task>100</Task>
<Keywords>0x80000000000000</Keywords>
<TimeCreated SystemTime="2015-10-22T15:22:13.000000000Z" />
<EventRecordID>3393</EventRecordID>
<Channel>Application</Channel>
<Computer>xxx.se</Computer>
<Security />
</System>
<EventData>
<Data>ShellExecuteTest.exe</Data>
<Data>0.0.0.0</Data>
<Data>5628ff16</Data>
<Data>msoshext.dll</Data>
<Data>16.0.4229.1029</Data>
<Data>56067af7</Data>
<Data>c0000005</Data>
<Data>00078e8c</Data>
<Data>e8c</Data>
<Data>01d10cdd6d71246d</Data>
<Data>C:\xxx\ShellExecuteTest.exe</Data>
<Data>C:\Program Files (x86)\Microsoft Office\root\VFS\ProgramFilesCommonX86\Microsoft Shared\Office16\msoshext.dll</Data>
<Data>ab37d64c-78d0-11e5-8261-005056ae16e5</Data>
<Data>
</Data>
<Data>
</Data>
</EventData>
</Event>