Поймать события Windows Explorer - PullRequest
1 голос
/ 13 июля 2011

Я хотел бы написать приложение, которое запускается рядом с Windows Explorer.Всякий раз, когда пользователь выбирает папку или файл, я хотел бы обновить свою программу, чтобы пользователь мог сделать примечание к файлу.

Это все, что он должен сделать.Информация будет сохранена для каждого файла.

Возможно ли это сделать без контекстного меню, вызываемого правой кнопкой мыши / (оболочка Windows?)?

Ответы [ 3 ]

1 голос
/ 06 января 2013

вы можете использовать BHO, в обработчике событий BHO DISPID_DOCUMENTCOMPLETE вы получите IShellFolderViewDual, чтобы вы могли найти ConnectionPoint для DIID_DShellFolderViewEvents и получить DISPID_SELECTIONCHANGED, подробности см. здесь

0 голосов
/ 19 апреля 2016

Вы можете создать FileSystemWatcher в проекте Windows Form, который запускается при изменении файловой системы. Вы можете найти FileSystemWatcher на панели инструментов в Visual Studio.

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

Вы можете создать наблюдатель для каждого накопителя (программно), а затем убедиться, что «просмотр подпапок и подпапок» также включен.

0 голосов
/ 12 декабря 2012

Вы можете написать скрипт AutoHotkey . Следующий скрипт будет проверять каждые 100 мс и отображать системную подсказку с именем выбранного файла / папки:

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 , чтобы взаимодействовать с ним.

...