Вверх ↑
Ответов: 294
Рейтинг: 64
#1: 2009-11-21 23:33:29 ЛС | профиль | цитата
a0005d26f писал(а):
нажимаем комбинацию клавиш


А это принципиально? Или подойдет свое контекстное меню в проводнике?

Если подойдет, то записываем в реестр:
HKEY_CLASSES_ROOTlnkfile кое что свое:
shellpapkocommand (где papko - это меню, которое будет видно в проводнике, после правого клика мыши на ярлыке) со значением по-умолчанию "полный путь к своей программе.exe" %1

После того как надавим на пункт контекстного меню - запуститься программа, в параметрах которой будет путь к выделенному ярлыку.
Пробовал открыть ярлык и считать путь до папки - получается не всегда, поэтому в пример не включил... дальше думать пока лень.

В примере кое-что лишнее, но это для добавления/удаления значений в реестр, кому лень вручную.

code_15775.txt

--------------------------------
Добавлено
--------------------------------
Кстати, а правда ведь полезная штука, а то надоедает через Свойства>Найти объект искать...
Вот рабочий пример на базе js-скрипта (скрипт не мой). Работает по тому же принципу - с добавлением пункта меню в проводнике, открывает папку с выделением целевого файла:


Add(MainForm,2953706,126,126)
{
Width=220
Height=106
Caption="InkTarget"
BorderStyle=3
Position=1
link(onCreate,12725606:doStrCat,[])
}
Add(Registry,7306025,420,224)
{
Data="WScript.exe windowssystem32FindTarget.js "%1""
Point(doDeleteKey)
link(Data,12383693:FString,[])
link(Key,13956442:FString,[(433,214)(475,214)])
}
Add(Button,8380071,308,217)
{
Left=15
Top=40
Width=95
Font=[MS Sans Serif,10,1,0,1]
Caption="Add"
link(onClick,6088565:doEvent1,[])
}
Add(Registry,6685895,217,252)
{
Key="lnkfileshell"
Point(doDeleteKey)
}
Add(Button,1645147,126,266)
{
Left=110
Top=40
Width=95
Font=[MS Sans Serif,10,1,0,1]
Caption="Delete"
link(onClick,6265503:doEvent1,[])
}
Add(FormatStr,13956442,469,119)
{
DataCount=1
Mask="lnkfileshell\%1command"
Point(FString)
link(Str1,3665214:Text,[])
}
Add(Hub,6088565,357,217)
{
OutCount=4
link(onEvent1,13956442:doString,[(381,223)(381,125)])
link(onEvent2,12383693:doString,[(389,230)(389,181)])
link(onEvent3,7306025:doWrite,[])
link(onEvent4,11632471:doSave,[(406,244)(406,342)])
}
Add(Edit,3665214,469,77)
{
Left=60
Top=10
Width=145
Text="InkTarget"
}
Add(Label,7246466,217,77)
{
Left=15
Top=15
Width=40
Height=17
Font=[MS Sans Serif,8,1,0,1]
Caption="Menu:"
}
Add(StrList,11632471,420,301)
{
Strings=#5:try {|32: OpenParentFolderAndSelectItem(|70: GetFolderItemByFilePath(WScript.Arguments.Item(0)).GetLink.Target,|12: 1|4|8|16|4: );|17:} catch (Err) {};|0:|40:function GetFolderItemByFilePath(Path) {|58: var FSO=new ActiveXObject("Scripting.FileSystemObject");|10: return (|44: new ActiveXObject("Shell.Application")).|80: NameSpace(FSO.GetParentFolderName(Path)).ParseName(FSO.GetFileName(Path));|1:}|0:|59:function OpenParentFolderAndSelectItem(FolderItem, Flags) {|5: var|33: Shell=FolderItem.Application,|33: ShellWindows=Shell.Windows(),|35: ParentFolder=FolderItem.Parent,|8: Err;|27: Shell.Open(ParentFolder);|43: for (var t=50; --t>=0; WScript.Sleep(50))|9: try {|50: var FolderView=ShellWindows.Item().Document;|61: if (FoldersAreEqual(ParentFolder, FolderView.Folder)) {|49: FolderView.SelectItem(FolderItem, Flags);|15: return;|7: }|20: } catch (Err) {}|1:}|0:|44:function FoldersAreEqual(Folder1, Folder2) {|28: while (Folder1!=Folder2) {|79: if (Folder1==null || Folder2==null || Folder1.Self.Path!=Folder2.Self.Path)|19: return false;|63: Folder1=Folder1.ParentFolder; Folder2=Folder2.ParentFolder;|3: }|14: return true;|1:}|
link(FileName,15837447:Var,[])
}
Add(GlobalVar,7293877,217,140)
{
Name="js"
}
Add(Dir,232926,147,77)
{
Point(WindowsDir)
}
Add(StrCat,12725606,175,140)
{
Str2="InkTarget.js"
link(onStrCat,7293877:doValue,[])
link(Str1,232926:WindowsDir,[])
}
Add(GlobalVar,15837447,427,273)
{
Name="js"
}
Add(GlobalVar,15623120,217,294)
{
Name="js"
}
Add(FileTools,14626034,217,322)
{
DelToRecycle=1
link(FileName,15623120:Var,[])
}
Add(Hub,6265503,168,266)
{
link(onEvent1,6685895:doDeleteKey,[])
link(onEvent2,14626034:doDelete,[(203,279)(203,342)])
}
Add(GlobalVar,151318,427,140)
{
Name="js"
}
Add(FormatStr,12383693,420,175)
{
Mask="WScript.exe "%2" "%%1""
Point(FString)
link(Str2,151318:Var,[])
}
Add(InfoTip,13267364,301,63)
{
Info=#3:Add|
Width=225
Height=305
}
Add(InfoTip,5056582,119,224)
{
Info=#6:Delete|
Width=155
Height=144
}


карма: 0

1
файлы: 1code_15775.txt [1.8KB] [128]
Голосовали:a0005d26f