在我的系统上,.xyz 扩展名根本没有注册。因此,当我在资源管理器中双击 .xyz 文件时,Windows 10 会弹出标准的“你想如何打开此文件”对话框,这是预期的。
现在,当我运行这个简短的代码片段时,会显示与上面相同的对话框,即使我将SEE_MASK_FLAG_NO_UI
标志放入sei.fMask
:
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 版本的行为是什么。