0

特定のフォルダーを表示するエクスプローラー ウィンドウを開く必要があります"C:\\Windows"。目標を達成するためにどの関数を使用すればよいでしょうか? 私は Windows を使用しているので API を使用できます。Boost も使用できますが、C++11 は使用できません。

4

2 に答える 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 に答える