Расширение оболочки для выбранного файла - PullRequest
3 голосов
/ 24 октября 2008

Есть ли способ узнать, какой файл выбирается в проводнике Windows? Я смотрел учебник, размещенный здесь Руководство для идиотов ... , но описанные действия:

парения

контекст

Свойства меню

сопротивление

перетаскивание

Интересно, существует ли метод, который вызывается при выборе файла. Например, для создания миниатюрного представления файла.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 24 октября 2008

Вот как я это делаю в AutoHotkey:

GetWindowsExplorerSelectedFile(_hWnd)
{
    local selectedFiles, file

    ; I can send ^C and parse Clipboard, but this way don't mess with clipboard at all, seems nicer.
    ; Warning: with this, you get only what is displayed in Explorer!
    ; If you kept the default Windows setting of not displaying file extensions (bad idea...),
    ; you will get partial file names...
    ControlGet, selectedFiles, List, Selected Col1, SysListView321, ahk_id %_hWnd%
    Loop, Parse, selectedFiles, `n  ; Rows are delimited by linefeeds (`n).
    {
        If (A_Index = 1)
        {
            file := A_LoopField
        }
        Else
        {
            ; Indicate that several files are selected, we return only the first one
            ; but count the total number of selected files, to indicate we return a partial result
            ErrorLevel := A_Index
        }
    }
    Return file
}

И я получаю путь из поля редактирования Проводника (который подвержен проблемам! Может отсутствовать или может быть настроен так, чтобы не отображать полный путь).

Основная идея заключается в том, чтобы спросить элемент управления Explorer SysListView32 о выделенных элементах и ​​получить их.

Теперь это взлом, возможно, есть более чистые способы ...

PS .: Также найдено это: Получение элементов ListView в C # из SysListView32 с использованием SendMessage
Нужно немного вуду, чтобы заставить его работать над другим процессом ...

Реальный код на французском сайте !

0 голосов
/ 24 октября 2008

Я наткнулся на этот скрипт на python.

from win32com.client.gencache import EnsureDispatch 

for w in EnsureDispatch("Shell.Application").Windows(): 
    print w.LocationName + "=" + w.LocationURL 

Но я получаю только открытую папку, а не выбранный в данный момент элемент в этой папке.

Кто-нибудь имеет больше информации?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...