вместо или кроме кнопки «Найти объект...» в окне свойств ярлыков (файлов .lnk) был бы такой же пункт в их контекстном меню
есть решение на Java хотелось бы на AutoIt
для конкретного ярлыка я нашёл это:
$details = FileGetShortcut(@DesktopDir & "\Shortcut.lnk")
MsgBox(0, "Path:", $details[1])
run ("explorer "& $details[1])
реестровский файл для добавления в контекстное меню ярлыков берём из примера ниже. а в последнюю строку надо подставить команду которая передаёт скрипту полный путь до ярлыка
на Java:
*************************************
пишем скрипт
---------------------
Код:
// FindTarget.js
// аргумент - путь к lnk-ярлыку
try {
var
Item=GetItemByPath(WScript.Arguments.Item(0)).GetLink.Target,
ShellWindows=Item.Application.Windows(),
ParentItem=Item.Parent.Self,
ParentFolderPath=ParentItem.Path,
GrandParentFolderPath=ParentItem.Parent.Self.Path;
ParentItem.InvokeVerb("Open");
for (var t=50; --t>=0; WScript.Sleep(50))
try {
var
FolderView=ShellWindows.Item().Document,
FolderViewItem=FolderView.Folder.Self;
if (
FolderViewItem.Path==ParentFolderPath &&
FolderViewItem.Parent.Self.Path==GrandParentFolderPath
) {
FolderView.SelectItem(Item, 1|4|8|16);
break;
}
} catch (Err) {}
} catch (Err) {}
function GetItemByPath (Path) {
var
Shell=new ActiveXObject("Shell.Application"),
FSO=new ActiveXObject("Scripting.FileSystemObject");
return Shell.
NameSpace(FSO.GetParentFolderName(Path)).ParseName(FSO.GetFileName(Path));
}
-----------------
сохраняем с расширением .js кладем например в G:\findobject\findobject.js
делаем там же рег файл
Код:
REGEDIT4
[HKEY_CLASSES_ROOT\lnkfile\shell\FindTarget]
@="&Найти объект"
[HKEY_CLASSES_ROOT\lnkfile\shell\FindTarget\command]
@="C:\\WINDOWS\\System32\\WScript.exe \"G:\\findobject\\findobject.js\" \"%1\""
выполняем и наслаждаемся функционалом
отдельное спасибо ребятам с http://forum.script-coding.info
*************************************
в этой же теме - как создать пункт в контекстном меню для всех файлов - "скопировать путь до файла в буфер обмена" (в реестре знаю как добавить пункт)
***********************
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell\222]
@="Копировать путь в буфер"
[HKEY_CLASSES_ROOT\*\shell\222\command]
@=" "
***********************
есть решение на Java хотелось бы на AutoIt
для конкретного ярлыка я нашёл это:
$details = FileGetShortcut(@DesktopDir & "\Shortcut.lnk")
MsgBox(0, "Path:", $details[1])
run ("explorer "& $details[1])
реестровский файл для добавления в контекстное меню ярлыков берём из примера ниже. а в последнюю строку надо подставить команду которая передаёт скрипту полный путь до ярлыка
на Java:
*************************************
пишем скрипт
---------------------
Код:
// FindTarget.js
// аргумент - путь к lnk-ярлыку
try {
var
Item=GetItemByPath(WScript.Arguments.Item(0)).GetLink.Target,
ShellWindows=Item.Application.Windows(),
ParentItem=Item.Parent.Self,
ParentFolderPath=ParentItem.Path,
GrandParentFolderPath=ParentItem.Parent.Self.Path;
ParentItem.InvokeVerb("Open");
for (var t=50; --t>=0; WScript.Sleep(50))
try {
var
FolderView=ShellWindows.Item().Document,
FolderViewItem=FolderView.Folder.Self;
if (
FolderViewItem.Path==ParentFolderPath &&
FolderViewItem.Parent.Self.Path==GrandParentFolderPath
) {
FolderView.SelectItem(Item, 1|4|8|16);
break;
}
} catch (Err) {}
} catch (Err) {}
function GetItemByPath (Path) {
var
Shell=new ActiveXObject("Shell.Application"),
FSO=new ActiveXObject("Scripting.FileSystemObject");
return Shell.
NameSpace(FSO.GetParentFolderName(Path)).ParseName(FSO.GetFileName(Path));
}
-----------------
сохраняем с расширением .js кладем например в G:\findobject\findobject.js
делаем там же рег файл
Код:
REGEDIT4
[HKEY_CLASSES_ROOT\lnkfile\shell\FindTarget]
@="&Найти объект"
[HKEY_CLASSES_ROOT\lnkfile\shell\FindTarget\command]
@="C:\\WINDOWS\\System32\\WScript.exe \"G:\\findobject\\findobject.js\" \"%1\""
выполняем и наслаждаемся функционалом
отдельное спасибо ребятам с http://forum.script-coding.info
*************************************
в этой же теме - как создать пункт в контекстном меню для всех файлов - "скопировать путь до файла в буфер обмена" (в реестре знаю как добавить пункт)
***********************
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell\222]
@="Копировать путь в буфер"
[HKEY_CLASSES_ROOT\*\shell\222\command]
@=" "
***********************