注:我已經看着下面的問題,但它沒有提供洞察:PDF file does not get open from ShellExecute function in Visual Studio, C++的ShellExecute在MFC不打開Adobe十一
我有同樣的問題,如對上述問題的海報。
嘗試使用ShellExecute從MFC應用程序打開PDF文件。 Win 8 64位系統上的Adobe XI。
hReturn = ::ShellExecuteA(NULL,"open",sPath,NULL,NULL,SW_SHOWMAXIMIZED);
sPath
是一個CString雖然我已經試過相同的結果替代品。我也試過SW_SHOW
,SW_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);
任何想法?
感謝
你試過只是'SW_SHOW'。你有沒有嘗試省略「打開」動詞? –
是的,我試過SW_SHOW。 – KokoCa
我剛剛發現,如果以管理員身份運行我的應用程序,它可以正常工作。然後......從那時起,無論我如何運行,它都能正常工作。這對任何人都沒有任何意義嗎?它解決了我在這臺特定機器上的問題,但是當我分發它時,恐怕它會很脆弱。 – KokoCa