Вверх ↑
Этот топик читают: Гость
Ответов: 175
Рейтинг: 10
#1: 2009-11-20 16:15:55 ЛС | профиль | цитата
Необходимо узнать путь и имя выделенного файла в explorer-e.
Интуитивно полагаю, без VBasic не обойтись...

Помогите, люди добрые


карма: 1

0
Ответов: 4641
Рейтинг: 334
#2: 2009-11-20 16:23:39 ЛС | профиль | цитата
ну узнал, а дальше что?
карма: 1
Время верстки: %cr_time% Текущее время: %time%
0
Ответов: 175
Рейтинг: 10
#3: 2009-11-20 22:54:14 ЛС | профиль | цитата
Ravilr, расскажешь как узнать, скажу что дальше....
карма: 1

0
Ответов: 4641
Рейтинг: 334
#4: 2009-11-21 10:58:57 ЛС | профиль | цитата
a0005d26f, я ожидал что ты обрисуешь ситуацию полностью. что ты хочешь сделать. И только после этого будут предложения.

я не играю в игры....скажи мне как это, а я потом спрошу у тебя как вот то.
карма: 1
Время верстки: %cr_time% Текущее время: %time%
0
Ответов: 16884
Рейтинг: 1239
#5: 2009-11-21 11:37:09 ЛС | профиль | цитата
Ravilr, на ответ
a0005d26f писал(а):
расскажешь как узнать, скажу что дальше....
мог бы и написать "расскажешь, что дальше - расскажу как узнать"
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 5227
Рейтинг: 587
#6: 2009-11-21 11:44:03 ЛС | профиль | цитата
Боюсь это не так просто как кажется.
карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0
Ответов: 175
Рейтинг: 10
#7: 2009-11-21 15:50:59 ЛС | профиль | цитата
Ravilr, я не в игры играю. И от описания полной задачи ничего не измениться, но

на всякий случай опишу зачем это нужно

1.выделяем файл ярлыка
2.нажимаем комбинацию клавиш
3.переходим в рабочую папку ярыка


делал то же самое com-расширениями explorer (через контекстное меню ярлыка) - получилось. но есть большое НО
com-расширения работают нестабильно, в XP sp3 вообще не работают, сносят explorer, иногда удаляют стандартные пункты контекстных меню и т.д и т.п
вобщем доверия к ним пропало раз и навсегда

поэтому пытаюсь решить задачу альтернативным путем и самостоятельно это не получиться, вся надежда на гигантов VBasic!

карма: 1

0
Ответов: 294
Рейтинг: 64
#8: 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
Ответов: 5227
Рейтинг: 587
#9: 2009-11-22 08:29:56 ЛС | профиль | цитата
Мне всречались примеры которые действуют по следующему принципу.
1. находят активное окно.
2. находят в нём SysListView32 и ComboBox.
3. через мессаги к этим контролам находят путь и имя выделенного файла.

вот собственно такая техника.
------------ Дoбавленo в 09.22:
Да кстати а что мозги то мозолить, самый простой вариант

Add(MainForm,2953706,154,105)
{
Width=407
Height=74
Point(Handle)
link(onCreate,9175772:doPopup,[(198,125)(198,153)(142,153)(142,181)])
}
Add(WinTools,9175772,154,168)
{
link(Handle,2953706:Handle,[])
}
Add(DropFile,8969416,252,112)
{
link(onDropFile,16404677:doText,[])
}
Add(Edit,16404677,308,112)
{
Left=10
Top=10
Width=370
Text=""
link(onChange,9368901:doWork,[])
}
Add(WinExec,13836460,455,112)
{
FileName="explorer.exe"
}
Add(FormatStr,13471525,406,112)
{
Mask="/e, /select, "%1" "
Point(FString)
link(onFString,13836460:doExec,[])
}
Add(VBJScript,9368901,357,112)
{
WorkPoints=#6:doWork|
EventPoints=#6:onPath|
Script=#44:Set WshShell = CreateObject("WScript.Shell")|22:Sub doWork(Data,Index)|51: Set WshShortcut = WshShell.CreateShortcut(Data)|37: sys.onPath WshShortcut.TargetPath|7:End Sub|
UseName=0
link(onPath,13471525:doString,[])
}


карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
1
Голосовали:a0005d26f
Ответов: 175
Рейтинг: 10
#10: 2009-11-22 17:47:01 ЛС | профиль | цитата
andrestudio, Quest, спасибо, братцы

Пищи для размышлений пока предостаточно. Ищу золотую середину между вашими способами....
карма: 1

0
Ответов: 5227
Рейтинг: 587
#11: 2009-11-22 18:11:30 ЛС | профиль | цитата
a0005d26f, если для размышлений то вот такой несложный код сделает для папок и для zip файлов контекстное меню в проводнике, для списка расширений скорей всего тоже возможно. code_15782.txt
карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0
файлы: 1code_15782.txt [1.2KB] [206]
11
Сообщение
...
Прикрепленные файлы
(файлы не залиты)