C++ MFC中的SeLeExcel不打开Adobe席

C++ MFC中的SeLeExcel不打开Adobe席,c++,pdf,mfc,C++,Pdf,Mfc,注意:我已经研究了以下问题,但没有提供任何见解: 我的问题与上面问题中的海报相同 尝试使用ShellExecute从MFC应用程序打开PDF文件。Adobe席上8胜64位系统。 hReturn = ::ShellExecuteA(NULL,"open",sPath,NULL,NULL,SW_SHOWMAXIMIZED); sPath是一个CString,尽管我尝试过同样的结果。我还尝试了SW\u SHOW,SW\u SHOWNORMAL。当我将HINSTANCE转换为int时,ShellExe

注意:我已经研究了以下问题,但没有提供任何见解:

我的问题与上面问题中的海报相同

尝试使用ShellExecute从MFC应用程序打开PDF文件。Adobe席上8胜64位系统。
hReturn = ::ShellExecuteA(NULL,"open",sPath,NULL,NULL,SW_SHOWMAXIMIZED);
sPath
是一个CString,尽管我尝试过同样的结果。我还尝试了
SW\u SHOW
SW\u SHOWNORMAL
。当我将HINSTANCE转换为int时,ShellExecute返回42。我理解这意味着它成功打开

事实上,如果我在执行命令时观察任务管理器,Adobe Reader会在任务管理器中打开,但Adobe窗口永远不会打开

当我退出应用程序时,Adobe仍处于打开状态

如果我试图打开目标PDF文件,O/S会说它无法打开,因为它已在另一个应用程序中打开。当我在任务管理器中的Adobe Reader上“结束任务”时,它会释放文件

如果单击该文件,它将在Adobe Reader中正常打开

因此,我由此推断ShellExecute正在启动Adobe,它得到了正确的文件,并且该文件确实是可读的

我还确认ShellExecute通过直接引用txt文件工作。它可以在记事本中打开

hReturn = ::ShellExecuteA(NULL,"open","d:\\develop\\readme.txt", NULL, NULL, SW_SHOWMAXIMIZED);
有什么想法吗


谢谢

这似乎是通过ShellExecuteEx在Win8上打开PDF文件时出现的已知问题。我也遇到过同样的问题,安装程序会在安装过程结束时尝试打开PDF。在Win7上,它运行良好。在Win8上,它显示您描述的症状。我通过提升安装程序的权限,找到了一个问题。我不知道为什么这会对事情产生负面影响,但确实如此。另一种选择是,我们将文件作为HTML文档打开。我们仍在寻找更好的解决方案。

尝试禁用“保护模式”


您刚才试过
SW\u SHOW
吗。你是否试过省略
“open”
动词。是的,我试过SW\u SHOW。我刚刚发现,如果我以管理员身份运行我的应用程序,它可以正常工作。然后。。。从那时起,无论我如何运行它,它都可以正常工作。这对任何人都有意义吗?它解决了我在这台特定机器上的问题,但当我分发它时,我担心它会变薄。我也会尝试不使用“打开”,尽管现在我不知道如何使它不工作。我将尝试重新启动,看看它是否返回到不工作状态。