DOBON.NETプログラミング道掲示板
(現在 過去ログ1 を表示中)
HOME
HELP
新規作成
新着記事
トピック表示
発言ランク
ファイル一覧
検索
過去ログ
[
最新記事及び返信フォームをトピックトップへ
]
[ トピック内全2記事(1-2 表示) ] <<
0
>>
■33133
/ inTopicNo.1)
1回目だけ指定したファイルを選択してフォルダを開けない
▼
■
□投稿者/ がおおおお
一般人(3回)-(2015/10/06(Tue) 10:30:15)
環境/言語:[Windows 10 Pro 32bit / Visual Studio Community 2015 / C#]
分類:[.NET]
例えば C:\Folder1 の中に 001.jpg 〜 300.jpg という連番ファイルがあり、
200.jpg というファイルを選択してフォルダを開くには以下の文を実行します。
Process.Start("EXPLORER.EXE", @"/select,""C:\Folder1\200.jpg""");
これは予定通りファイルが選択されている状態でフォルダが開きます。
次に Folder1 を Folder2 という名前で丸ごとコピーし
以下の文を実行するとファイルが選択されて「いない」状態でフォルダが開きます。
Process.Start("EXPLORER.EXE", @"/select,""C:\Folder2\200.jpg""");
再度以下の文を実行するとファイルが選択されて「いる」状態でフォルダが開きます。
Process.Start("EXPLORER.EXE", @"/select,""C:\Folder2\200.jpg""");
次に Folder2 を Folder3 という名前で丸ごとコピーし
以下の文を実行するとファイルが選択されて「いない」状態でフォルダが開きます。
Process.Start("EXPLORER.EXE", @"/select,""C:\Folder3\200.jpg""");
再度以下の文を実行するとファイルが選択されて「いる」状態でフォルダが開きます。
Process.Start("EXPLORER.EXE", @"/select,""C:\Folder3\200.jpg""");
つまり新しく作られたフォルダに対して select を指定しても1回目だけは正しく表示されません。
2回目以降は何度実行しても正しく表示されます(10回程度しか試していませんが)。
1回目から正しく表示する方法をご存知の方はいらっしゃいませんでしょうか?
引用返信
削除キー/
編集
削除
■33135
/ inTopicNo.2)
Re[1]: 1回目だけ指定したファイルを選択してフォルダを開けない
▲
▼
■
□投稿者/ がおおおお
一般人(4回)-(2015/10/06(Tue) 13:14:23)
ごめんなさい。
いろいろ調べていたら SHOpenFolderAndSelectItems を使う方法を見つけました。
http://stackoverflow.com/questions/22578757/open-a-folder-in-windows-explorer-and-select-a-file-works-second-time-only
http://stackoverflow.com/questions/3018002/c-how-to-use-shopenfolderandselectitems
private void SelectInFileExplorer(string fullPath)
{
if (string.IsNullOrEmpty(fullPath))
throw new ArgumentNullException("fullPath");
fullPath = Path.GetFullPath(fullPath);
IntPtr pidlList = NativeMethods.ILCreateFromPathW(fullPath);
if (pidlList != IntPtr.Zero)
try
{
// Open parent folder and select item
Marshal.ThrowExceptionForHR(NativeMethods.SHOpenFolderAndSelectItems(pidlList, 0, IntPtr.Zero, 0));
}
finally
{
NativeMethods.ILFree(pidlList);
}
}
static class NativeMethods
{
[DllImport("shell32.dll", ExactSpelling=true)]
public static extern void ILFree(IntPtr pidlList);
[DllImport("shell32.dll", CharSet=CharSet.Unicode, ExactSpelling=true)]
public static extern IntPtr ILCreateFromPathW(string pszPath);
[DllImport("shell32.dll", ExactSpelling=true)]
public static extern int SHOpenFolderAndSelectItems(IntPtr pidlList, uint cild, IntPtr children, uint dwFlags);
}
解決
済
み!
引用返信
削除キー/
編集
削除
トピック内ページ移動 / <<
0
>>
このトピックに書きこむ
過去ログには書き込み不可
Mode/
通常管理
表示許可
Pass/
HOME
HELP
新規作成
新着記事
トピック表示
発言ランク
ファイル一覧
検索
過去ログ
-
Child Tree
-