C++ ShellExecute不';我不能为其他计算机工作

C++ ShellExecute不';我不能为其他计算机工作,c++,winapi,release,shellexecute,C++,Winapi,Release,Shellexecute,我用Win32Api做了一个程序。在程序中,它有“ShellExecute”短语,以便执行chrome进行搜索。 以下是我所写内容的摘要 #include <windows.h> #include <shellapi.h> int main () { ShellExecute(NULL, L"open", searching_url, NULL, NULL, SW_SHOWMAXIMIZED); } #包括 #包括 int main(){ ShellExecut

我用Win32Api做了一个程序。在程序中,它有“ShellExecute”短语,以便执行chrome进行搜索。 以下是我所写内容的摘要

#include <windows.h>
#include <shellapi.h>
int main () {
    ShellExecute(NULL, L"open", searching_url, NULL, NULL, SW_SHOWMAXIMIZED);
}
#包括
#包括
int main(){
ShellExecute(NULL,L“打开”,搜索url,NULL,NULL,SW\u SHOWMAXIMIZED);
}
它在我的电脑里工作。但是,我把这个windows应用发送给其他人,他们说它不工作。我是说只有shellexecute不起作用。我不知道从哪里开始弄清楚这里出了什么问题

你能建议我如何用结构化的方式来解决这个问题吗? 谢谢。

有两件事可以尝试:

  • 在某些情况下,ShellExecute可能要求初始化COM。报告将更详细地解释原因。在调用
    ShellExecute
    coninitializex()之前,应该调用
    coinitializex(NULL,COINIT\u APARTMENTTHREADED | COINIT\u DISABLE\u OLE1DDE)
  • 不要使用
    L“open”
    作为动词,通常应该使用
    NULL
    NULL
    将始终为不总是“打开”的对象提供“默认”操作(相当于双击它)

检查返回值(让您的程序显示它并让其他人告诉您它是什么),这将为您提供有关执行失败原因的更多信息@ShellExecute的M.M返回值可能是无用的。要获得正确的错误处理,请使用ShellExecuteEx。ShellExecute是否显示错误?您是否检查了ShellExecute的返回值?谢谢您的评论和回答。我把L“open”改为NULL,它就成功了!但我仍然不确定它为什么会这样,因为正如乔纳森·波特所指出的,动词“open”可能不存在。