2016-01-21 122 views
-1

我使用Win32Api做了一個程序。在程序中,它具有「ShellExecute」短語,以執行搜索所需的chrome。 以下是我寫的內容的抽象。ShellExecute不適用於其他計算機

#include <windows.h> 
#include <shellapi.h> 
int main() { 
    ShellExecute(NULL, L"open", searching_url, NULL, NULL, SW_SHOWMAXIMIZED); 
} 

它在我的電腦中工作。但是,我把這個Windows應用程序發送給其他人,他們說這是行不通的。我的意思是隻有shellexecute不起作用。我無法從哪裏開始弄清楚這裏出了什麼問題。

請問請問如何以結構化的方式解決問題? 謝謝。

+0

檢查返回值(讓程序顯示它並讓其他人告訴你它是什麼),這會給你更多關於爲什麼執行失敗的信息。 [返回值的參考](https://msdn.microsoft.com/en-us/library/windows/desktop/bb762153(v = vs.85).aspx) –

+0

@ M.M從ShellExecute返回值可能沒用。要獲得正確的錯誤處理,請使用ShellExecuteEx。 –

+0

ShellExecute是否顯示錯誤?你檢查了ShellExecute的返回值嗎? –

回答

5

兩件事情嘗試:

  • 的ShellExecute可以要求COM到在某些情況下被初始化。 docs for the ShellExecute function解釋了爲什麼更詳細。之後在致電ShellExecuteCoUninitialize()之前,您應該致電CoInitializeEx(NULL, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE)
  • 而不是使用L"open"作爲動詞,你應該通常使用NULLNULL將始終爲您提供一個對象的「默認」操作(相當於雙擊它),它不總是「打開」。
相關問題