我在Excel里面做了了Ribbon按钮,点击按钮加载文件
使用如下代码:
System.Diagnostics.Process.Start(文件路径)现在的问题是,如果文件不是与Excel关联的,例如rar之类的,可以正常打开如果是Excel关联的扩展名,例如xls,Excel就会失去响应几分钟,文件也没用打开,然后这条语句就像没有执行,就运行后面的语句了。用ShellExecute也是一样结果。检查返回值是42(没报错误?)谁知道是什么原因?如何解决?Process.Start不能执行宿主程序关联的文件吗?貌似运行的时候没有加载成功Process StartShellExecute失去响应
使用如下代码:
System.Diagnostics.Process.Start(文件路径)现在的问题是,如果文件不是与Excel关联的,例如rar之类的,可以正常打开如果是Excel关联的扩展名,例如xls,Excel就会失去响应几分钟,文件也没用打开,然后这条语句就像没有执行,就运行后面的语句了。用ShellExecute也是一样结果。检查返回值是42(没报错误?)谁知道是什么原因?如何解决?Process.Start不能执行宿主程序关联的文件吗?貌似运行的时候没有加载成功Process StartShellExecute失去响应
代码是这样的(不崩溃):
if (extensionName.StartsWith(".xl") || extensionName.StartsWith(".csv"))
{
ExcelAddInUI.xlApp.Workbooks.Open(control.Tag);
}
else
{
System.Diagnostics.Process.Start(control.Tag);
//IntPtr a=Win32API.ShellExecute(IntPtr.Zero, "open", control.Tag, null, null, (int)ShowWindowStyles.SW_RESTORE);
}如果不做xl和csv判断,都让System.Diagnostics.Process.Start执行,就会出现一楼说的现象。没法理解?
ShellExecute报SE_ERR_DDEFAIL 动态数据交换执行失败.(29)如果不选中"忽略使用动态数据交换(DDE)的其他应用程序",
ShellExecute返回值是42(要等几分钟才返回值,期间Excel ribbon菜单会停止响应),文件并没有被当前的Excel所打开。如果启动一个新的进程,是可以打开的。估计还是DDE方面的什么问题