1

Тема: AHK: Как извлечь имя файла под курсором в буфер обмена

Как извлечь имя файла под курсором в тотал командере  или эксплорере ? Насколько я понял команды FileGet...  не работают с именем файла.

Не знаю, не умею, но быстро учусь!

2

Re: AHK: Как извлечь имя файла под курсором в буфер обмена

Поиском.

Win 10 x64
AHK
                       Справка AHK v1 тебе в помощь.

3 (изменено: yalanne, 2015-08-10 15:00:02)

Re: AHK: Как извлечь имя файла под курсором в буфер обмена

loop
{
Acc:=Acc_ObjectFromPoint(c),name:=""
if (Acc.AccRole(c) = 34)
    name := Acc.AccName(c)
else if (Acc.accParent.AccRole(0) = 34)
    name := Acc.accParent.AccName(0)

tooltip % (name? "Курсор на:`n" : "") name
sleep 50
}

Acc_ObjectFromPoint(ByRef _idChild_ = "", x = "", y = "")
{
Static h
% (!h) and (h:=DllCall("LoadLibrary","Str","oleacc","Ptr"))
    If    DllCall("oleacc\AccessibleObjectFromPoint", "Int64", x==""||y==""?0*DllCall("GetCursorPos","Int64*",pt)+pt:x&0xFFFFFFFF|y<<32, "Ptr*", pacc, "Ptr", VarSetCapacity(varChild,8+2*A_PtrSize,0)*0+&varChild)=0
    Return    ComObjEnwrap(9,pacc,1), _idChild_:=NumGet(varChild,8,"UInt")
}

Вот исправил.

Работает на Acc но его библиотеку скачивать не надо уже вшита в скрипт нужная функция.

4 (изменено: Alectric, 2015-08-07 22:13:21)

Re: AHK: Как извлечь имя файла под курсором в буфер обмена

Решил поизучать Acc. Взял библиотеку по ссылке. Источник.
Вот что получилось:

#include,%a_scriptdir%\Acc.ahk
#SingleInstance,Force

loop
{
sleep,50
acc:=Acc_ObjectFromPoint(ChildId)
role:=Acc_Role(Acc,ChildId)
rol:=Acc.AccRole(ChildId)
name:=Acc.accValue(ChildId)
if (!name or (name-name)="0")
  name:=Acc.AccName(ChildId)
stringleft,name,name,128

tooltip,% rol "`n`n" role "`n`n" name
}
return

Библиотеку положить рядом со скриптом.

Win 10 x64
AHK
                       Справка AHK v1 тебе в помощь.

5

Re: AHK: Как извлечь имя файла под курсором в буфер обмена

yalanne
А можно подправить код. ПКМ по файлу выскакивает окно с ошибкой.