特定のフォルダーを表示するエクスプローラー ウィンドウを開く必要があります"C:\\Windows"
。目標を達成するためにどの関数を使用すればよいでしょうか? 私は Windows を使用しているので API を使用できます。Boost も使用できますが、C++11 は使用できません。
user2532605
質問する
14778 次
2 に答える
0
1 時間前に同様の関数を書きました。
この関数は 100% 希望通りにはなりませんが、それを使用して希望どおりにすることができます。エクスプローラ ウィンドウが開き、指定しているファイルがマークされます。"C:\Windows\System32"
この場合、指定して"C:\Windows"
開いてSystem32
マークしたとしましょう。中に入りたい場合は、 のようなものを使用する必要がありますFindFirstFile
。ディレクトリが空の場合、提供されたソリューションは機能しません...
bool ExplorerGoTo (const String &Path)
{
TCHAR tcBuff[8] = {0};
lstrcpyn(tcBuff, Path.c_str(), 5);
String stParams = _T("/n, /select, ");
if( lstrcmpi(_T("\\??\\"), tcBuff) == 0 )
{
stParams += (Path[4]);
}
else
{
stParams += Path;
}
String stExplorer = _T("C:\\Windows\\explorer.exe");
//ExpandPath(stExplorer);
if (stExplorer.empty ()) stExplorer = _T("explorer.exe");
SHELLEXECUTEINFO shi = { 0 };
shi.cbSize = sizeof (SHELLEXECUTEINFO);
shi.lpVerb = _T("open");
shi.lpFile = stExplorer.c_str ();
shi.lpParameters = stParams.c_str ();
shi.nShow = SW_SHOW;
bool bRes = ShellExecuteEx( &shi );
if( bRes == FALSE && GetLastError() != 0 )
{
Sleep(200);
return ShellExecuteEx( &shi );
}
return bRes;
}
そして絶対に使わないsystem()
于 2013-07-24T15:45:38.647 に答える