在我的系统中,.xyz扩展名根本没有注册。所以当我在资源管理器中双击一个.xyz文件时,Windows 10会弹出标准的“如何打开此文件”对话框,这是预期的。
现在,当我运行这个短代码片段时,即使我在sei.fMask
中放置了SEE_MASK_FLAG_NO_UI
标志,仍会显示与上面相同的对话框:
SHELLEXECUTEINFO sei = { 0 };
sei.cbSize = sizeof(SHELLEXECUTEINFO) ;
sei.fMask = SEE_MASK_FLAG_NO_UI;
sei.hwnd = AfxGetMainWnd()->GetSafeHwnd();
sei.lpVerb = _T("open");
sei.lpFile = _T("C:\\Users\\Test\\Documents\\temp\\Temp.xyz");
sei.lpParameters = NULL;
sei.lpDirectory = appdir;
sei.nShow = SW_SHOW;
ShellExecuteEx(&sei);
文件
"C:\\Users\\Test\\Documents\\temp\\Temp.xyz"
存在。将
sei.lpFile
指向现有的 .txt 文件,与预期一样使用记事本打开。
文档 表示使用 SEE_MASK_FLAG_NO_UI
不应显示任何错误消息。
那么我该怎么做才能使 ShellExecuteEx
不弹出任何消息而返回错误代码呢?
我只在 Windows 10 上进行了测试,不知道旧版 Windows 的行为如何。
ShellExecuteEx
。 - Jabberwocky