2016-01-21 91 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将始终为您提供一个对象的“默认”操作(相当于双击它),它不总是“打开”。
相关问题