Monitor file selection in explorer (like clipboard monitoring) in C#

Posted by Christian on Stack Overflow See other posts from Stack Overflow or by Christian
Published on 2010-03-05T21:55:32Z Indexed on 2010/03/21 17:01 UTC
Read the original article Hit count: 378

Filed under:
|
|
|

Hi,

I am trying to create a little helper application, one scenario is "file duplication finder". What I want to do is this:

  • I start my C# .NET app, it gives me an empty list.
  • Start the normal windows explorer, select a file in some folder
  • The C# app tells me stuff about this file (e.g. duplicates)

How can I monitor the currently selected file in the "normal" windows explorer instance. Do I have to start the instance using .NET to have a handle of the process. Do I need a handle, or is there some "global hook" I can monitor inside C#. Its a little bit like monitoring the clipboard, but not exactly the same...

Any help is appreciated (if you don't have code, just point me to the right interops, dlls or help pages :-) Thanks, Chris

EDIT 1 (current source, thanks to 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);
                }
            }
        }

© Stack Overflow or respective owner

Related posts about c#

Related posts about .NET