В моей системе расширение .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.