extensão de shell para o arquivo selecionado
-
04-07-2019 - |
Pergunta
Existe uma maneira de saber qual arquivo está sendo selecionado no Windows Explorer? Eu estive olhando o tutorial postado aqui Idiotas guia para ... mas o ações descritas são:
pairar
contexto
propriedades do menu
arrastar
arrastar e soltar
Gostaria de saber se existe um método que se invocado quando um arquivo é selecionado. Por exemplo, para criar uma visualização em miniatura do arquivo.
Graças.
Solução
Aqui está como eu faço isso em 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
}
E eu obter o caminho do campo de edição do Explorer (que é propenso a problemas! Pode estar ausente ou pode ser configurado para não mostrar caminho completo).
A idéia central é pedir o controle SysListView32 de Explorador quais são os itens selecionados, e levá-los.
Agora, isso é um hack, provavelmente há formas mais limpas ...
PS .: Também encontrei isto: Obtendo ListView itens em C # de SysListView32 usando SendMessage
Precisa de alguma voodoo para obtê-lo trabalhando em outro processo ...
código real em um site francês !
Outras dicas
Me deparei com este script python.
from win32com.client.gencache import EnsureDispatch
for w in EnsureDispatch("Shell.Application").Windows():
print w.LocationName + "=" + w.LocationURL
Mas eu só obter a pasta que está aberta e não o item atualmente selecionado na pasta.
Alguém tem mais informações?