捕获Windows资源pipe理器事件

我想写一个运行在Windows资源pipe理器旁边的应用程序。 每当用户select一个文件夹或文件,我想更新我的程序,所以用户可以对该文件进行注释。

这就是所要做的。 信息将被保存每个文件。

是否有可能做到这一点没有一个右键单击上下文菜单/(Windowsshell?)?

    您可以使用BHO,在BHO DISPID_DOCUMENTCOMPLETE事件处理程序中,您将获得IShellFolderViewDual,以便您可以找到DIID_DShellFolderViewEvents的ConnectionPoint并将recive DISPID_SELECTIONCHANGED事件,请参阅此处以了解详细信息

    你可以写一个AutoHotkey脚本。 以下脚本将每隔100ms检查一次,并显示一个系统工具提示,其中包含所选文件/文件夹的名称:

    Previous= Current= Loop { Current :=GetExplorerSel() If (Previous <> Current) { TrayTip, You have selected, %Current%, 10, 1 Previous = %Current% } Sleep 100 } GetExplorerSel(hwnd="") { hwnd := hwnd ? hwnd : WinExist("A") WinGetClass class, ahk_id %hwnd% if (class="CabinetWClass" or class="ExploreWClass") for window in ComObjCreate("Shell.Application").Windows if (window.hwnd==hwnd) { selected := window.Document.SelectedItems for item in selected ret .= item.path "`n" return Trim(ret,"`n") } } 

    如果您想使用其他语言,只需查看COM即可与其交互。

    您可以在发生文件系统更改时触发的Windows窗体项目中创建FileSystemWatcher。 您可以在Visual Studio的工具箱中找到FileSystemWatcher。

    https://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher(v=vs.110).aspx

    您可以为每个驱动器创建一个监视器(以编程方式),然后确保“监视子文件夹和子文件夹项”也被启用。