ファイルやフォルダの「プロパティ」ダイアログを表示したくなった.
以前調べた時,ShellExecute の lpOperation で指定すれば良いと思っていた.
Copilot に聞いてみると,次の様なコードが表示された.
{
LPCTSTR filePath = _T("E:/_backup_") ;
HINSTANCE hInstance = ::ShellExecute(NULL,_T("properties"),filePath,NULL,NULL,SW_SHOWNORMAL) ;
if (UINT64(hInstance) < 32) {
DWORD error = ::GetLastError() ;
tstring str = ::Error_FormatMessage(error) ;
std::tout << str << std::endl ;
}
}
{
SHELLEXECUTEINFO sei = {0};
sei.cbSize = sizeof(SHELLEXECUTEINFO) ;
sei.lpVerb = _T("properties") ;
sei.lpFile = _T("E:/_backup_") ;
sei.nShow = SW_SHOWNORMAL ;
sei.fMask = SEE_MASK_INVOKEIDLIST ;
if (!::ShellExecuteEx(&sei)) {
DWORD error = ::GetLastError() ;
tstring str = ::Error_FormatMessage(error) ;
std::tout << str << std::endl ;
}
}
::ShellExecuteEx は表示できるが,::ShellExecute はエラーになる.
改めてドキュメントを見ると ::ShellExecute には “properties” がない.
C++&Win API 設定(Windows設定アプリ)を表示する
ファイルプロパティの表示
ShellExecute()とデフォルトブラウザの起動、拡張子の関連付け