ShellExecute、エクスプローラで選択状態
お世話になってます。
VC++2010、MFCでファイルリストを生成するプログラムを作っています。
(今回質問した部分以外は正常に動作しています)
ファイル生成後、エクスプローラで、生成したリスト(○○.html)を選択状態にしたいです。
しかし、デスクトップ直下に同名のファイル( 例: AlbumList.html )が既にある場合、うまく行きません。
【不具合1】ファイルの生成は意図したディレクトリにされているのに、エクスプローラに「/select」をつけて、開くと、デスクトップ直下の同名のファイル( 例: AlbumList.html )が開かれて(選択されて)しまう
TRACE(_T("◆FileName→%s \r\n" ),FileName);
TRACE(_T("◆savePath→%s \r\n" ),savePath);
//★エクスプローラで開く
ShellExecute( NULL, _T("open"), _T("C:\\WINDOWS\\EXPLORER.EXE"), _T("/select,") + FileName , savePath, SW_SHOWNORMAL );
トレース結果:
◆FileName→AlbumList.html
◆savePath→D:\\Visual Studio 2010 - Data\\Projects\\FileListCreator_Shift-JIS(75)\\Debug\\FileListCreator(LIST)\\
エクスプローラに開かれて、選択状態になったファイル
C:\ユーザ\[ユーザ名]\デスクトップ\AlbumList.html
更新されたファイル
D:\Visual Studio 2010 - Data\Projects\FileListCreator_Shift-JIS(75)\Debug\FileListCreator(LIST)\AlbumList.html
【不具合2】デスクトップに
・ FileListCreator.lnk (リンク)(H:\FileListCreator へのリンク)
・ FileListCreator (フォルダ)(デスクトップにおいた FileListCreator.exe が入っているフォルダ)
(C:\Users\[ユーザ名]\Desktop\FileListCreator)
があり、FileListCreator.exe から 以下のコードを実行するボタンを押すと、リンクの方が開かれてしまう。
※リンクフォルダ名、exe名ともに、「FileListCreator」でかつ両方がデスクトップにおかれている場合に問題が起こる。
//http://rararahp.cool.ne.jp/vc/vctips/api.htm
// 実行ファイルのフルパス取得
TCHAR szPath[_MAX_PATH];
GetModuleFileName( NULL, szPath, MAX_PATH);
CString CurDir;
CurDir = CurrentDirFunc(szPath); //szPathからファイル名を取り除くユーザー関数
if (CurDir !=_T("")){
CurDir.Replace(_T("\\"),_T("\\\\"));
}
//★エクスプローラで開く
ShellExecute(NULL, _T("open"), CurDir, NULL, NULL, SW_SHOWNORMAL);
リンクファイル名を
「FileListCreator2.lnk」などと違う名前にすると、実行ファイルのディレクトりが正しく開かれる。
→【不具合2】の方は、うまく説明できないので、(1)だけでもお教え下さると嬉しいです。
宜しくお願いします。