私は小さなヘルパーアプリケーションを作成しようとしています。1つのシナリオは「ファイル複製ファインダー」です。私がしたいのはこれです:
- C#.NETアプリを起動すると、空のリストが表示されます。
- 通常のWindowsエクスプローラーを起動し、フォルダー内のファイルを選択します
- C#アプリは、このファイルに関する情報を教えてくれます(重複など)
「通常の」Windowsエクスプローラーインスタンスで現在選択されているファイルを監視するにはどうすればよいですか。プロセスを処理するには、.NETを使用してインスタンスを起動する必要がありますか?ハンドルが必要ですか、それともC#内で監視できる「グローバルフック」がありますか。クリップボードの監視に少し似ていますが、まったく同じではありません...
どんな助けでもありがたいです(コードがない場合は、適切な相互運用機能、dll、またはヘルプページを教えてください:-)ありがとう、クリス
編集1(現在のソース、Mattiasのおかげで)
using SHDocVw;
using Shell32;
public static void ListExplorerWindows()
{
foreach (InternetExplorer ie in new ShellWindowsClass())
DebugExplorerInstance(ie);
}
public static void DebugExplorerInstance(InternetExplorer instance)
{
Debug.WriteLine("DebugExplorerInstance ".PadRight(30, '='));
Debug.WriteLine("FullName " + instance.FullName);
Debug.WriteLine("AdressBar " + instance.AddressBar);
var doc = instance.Document as IShellFolderViewDual ;
if (doc != null)
{
Debug.WriteLine(doc.Folder.Title);
foreach (FolderItem item in doc.SelectedItems())
{
Debug.WriteLine(item.Path);
}
}
}