gpt4 book ai didi

c++ - 为什么 ShellExecuteEx 不返回进程句柄?

转载 作者:行者123 更新时间:2023-11-30 17:43:04 24 4
gpt4 key购买 nike

我正在尝试使用以下功能打开图像:

HANDLE openFile(char *path){ // path = "C:\Users\Foo Bar\Code\Test\test.jpg"
CoInitializeEx(NULL, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE);

SHELLEXECUTEINFOW info;
memset(&info, 0, sizeof(info));
info.cbSize = sizeof(info);
info.fMask = SEE_MASK_NOCLOSEPROCESS | SEE_MASK_NOASYNC ;
info.hwnd = NULL;
info.lpVerb = L"open";
info.lpFile = utf8_toWchar(path);
info.lpParameters = NULL;
info.lpDirectory = NULL;
info.nShow = SW_SHOW;
info.hInstApp = NULL;

if (!ShellExecuteExW(&info)){
System_printLastErrorString(); //never gets here
}
//free((void*)info.lpFile);
CoUninitialize();

return info.hProcess; //this is always NULL
}

问题是 info.hProcess 始终为 NULL,尽管默认图像编辑程序未打开并且稍后打开。

如何解决这个问题?

旁注:我不知道这是否相关,但调用程序是 Qt 应用程序。

最佳答案

我最终自己调用了CreateProcess来获取AssocQueryString的结果。这给了我所需的句柄。

关于c++ - 为什么 ShellExecuteEx 不返回进程句柄?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20319841/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com