1 (изменено: RVRdp, 2012-01-17 13:19:33)

Тема: HTA: Передача аргументов в .hta через контекстное меню в проводнике

Если добавляю в реестре строковый параметр
"C:\WINDOWS\system32\mshta.exe" "C:\proga.hta" "%1"
для открытия в контестном меню проводника нескольких папок(точнее мне нужно передать в .hta пути выделенных папок в проводнике)
В итоге в .hta передается только путь одной папки запускается еще .hta передается второй путь папки и так далее.

Мне нужно чтобы в мою программу передалось несколько параметров вида:
""C:\proga.hta" "C:\папка01" "C:\папка02" "C:\папка03""
а не так:
""C:\proga.hta" "C:\папка01"
""C:\proga.hta" "C:\папка02"
""C:\proga.hta" "C:\папка03"    (Каждый раз запускается программа столько раз сколько было выделено папок)
Как мне это реализовать?

2

Re: HTA: Передача аргументов в .hta через контекстное меню в проводнике

может кто знает по какому принципу передаются параметры в контекстном меню проводника, а дальше я сам разберусь. и еще нашел как в JScript перехватить пареметры коммандной строки а в HTA совместно с JScript  только как перехватить полностью строку. мне нужно чтото типа массива. под рукой исходника нет пишу своими словами. по возможности выложу

3

Re: HTA: Передача аргументов в .hta через контекстное меню в проводнике

Находится в течение 1-2 минут.
HTA:APPLICATION
Свойство commandLine сами найдете?

( 2 * b ) || ! ( 2 * b )

4

Re: HTA: Передача аргументов в .hta через контекстное меню в проводнике

Rumata пишет:

Находится в течение 1-2 минут.
HTA:APPLICATION
Свойство commandLine сами найдете?

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

5

Re: HTA: Передача аргументов в .hta через контекстное меню в проводнике

Потому что Проводник так написан. А Вы думаете, что он осознал себя и решил взбунтоваться против Вас?

6

Re: HTA: Передача аргументов в .hta через контекстное меню в проводнике

YMP пишет:

Потому что Проводник так написан. А Вы думаете, что он осознал себя и решил взбунтоваться против Вас?

Может тогда есть какая нибудь библиотека (.dll) напримере winrar'a где передаются выделенные папки и файлы за один раз для дальнейшей обработки. должен же быть выход.
кроме %1 есть же %* и %L (может и другая буква) где нибудь есть описание всего этого?

7

Re: HTA: Передача аргументов в .hta через контекстное меню в проводнике

RVRdp пишет:

все вкуче, нет массива аргументов

То о чем Вы говорите - это реализация WSH. Там это востребовано в большей степени, поэтому командная строка уже разобрана и разложена поэлементно.

RVRdp пишет:

проводник через контекстное меню аргументы передает не в одну строку а каждый раз по одному аргументу в отдельной коммандной строке

Действительно - так написан. И еще где-то как-то в реестрах надо что-то включить, чтобы вообще в Проводнике на HTA можно было что-то "бросить".

( 2 * b ) || ! ( 2 * b )

8

Re: HTA: Передача аргументов в .hta через контекстное меню в проводнике

Rumata пишет:

То о чем Вы говорите - это реализация WSH.

как отдельный скрипт работает, в связке с hta неработает, если только кинуть выд файлы на .js получить аргументы запустить .hta и передать в него полученные аргументы. вопрос как?

Rumata пишет:

Действительно - так написан.

Печально всё!

9

Re: HTA: Передача аргументов в .hta через контекстное меню в проводнике

Немного не в тему, но возможно как альтернативное решение использовать Drag & Drop ?

Попробовал. Сразу несколько элементов можно перекинуть прям в окно. И каталоги и файлы.


<html>
<head>
<title>IVBDataObject Demo</title>
 
<style type="text/css">
body {
background-image: url(".\test.gif");
background-attachment:fixed;
background-repeat: no-repeat;
background-position: 100 15;
}
</style>
 
</head>
<body>
 
<fieldset>
<legend><strong>Drop File(s) » </strong>
 
<object id="IAnimation" 
classid="clsid:B09DE715-87C1-11D1-8BE3-0000F8754DA1" height=76 width=100 style="filter:alpha(opacity=0);opacity:0;">
<param name="OleDropMode" value="1" />
</object>
 
&nbsp;</legend>
<label><em>output: </em></label>
<textarea id="output" cols="100" rows="10"></textarea>
</fieldset>
 
<script type="text/JScript">
function IAnimation::OLEDragDrop(Data){
if(Data.GetFormat(15)){
var O = "";
var e = new Enumerator(Data.Files);
while(!e.atEnd()){
O += e.item() + "\n";
e.moveNext();
}
output.value = O;
BackColor=0x80000003;}
}
 
 
// Just for visual feedback...
 
function IAnimation::OLEDragOver(Data, _, _, _, _, _, State){
if (State == 0){
if(Data.GetFormat(15)){Backcolor = 0x80000002;}
}
if(State == 1){Backcolor = 0x80000003;}
}
 
function window::onload(){
IAnimation.BackColor=0x80000003;
}
</script>
</body>
</html>

Пример взят с http://www.experts-exchange.com/Program … 29067.html

Передумал переделывать мир. Пашет и так, ну и ладно. Сделаю лучше свой !

10

Re: HTA: Передача аргументов в .hta через контекстное меню в проводнике

RVRdp пишет:

Если добавляю в реестре строковый параметр
"C:\WINDOWS\system32\mshta.exe" "C:\proga.hta" "%1"
для открытия в контестном меню проводника нескольких папок

Кстати, если не в реестре прописывать, а создать ярлык в папке SendTo с командой mshta.exe C:\proga.hta, то из контекстного меню Проводника можно послать на него несколько элементов и все пути будут в комстроке одного окна.

11

Re: HTA: Передача аргументов в .hta через контекстное меню в проводнике

Xameleon пишет:

Немного не в тему, но возможно как альтернативное решение использовать Drag & Drop ?

YMP пишет:

Кстати, если не в реестре прописывать, а создать ярлык в папке SendTo.

Всем спасибо, буду использовать оба варианта в общем то что надо. Если кому интересно пишу программу чтото типа сортировщик медиа контента, в данном случае берется путь папки или несколько папок где лежат видео файлы и создает список. Зачем? Он не просто список создает, в этом списке нет мусора такого как превьюшки субтитры и аудио дорожки. Кроме этого можно отсортировать фильмы по году выпуска и качеству записи, есть обратный транслит в понятный русский язык. А также экспорт списка фильмов! Ну и естественно их запуск!

Как тут скриншот добавить?

12

Re: HTA: Передача аргументов в .hta через контекстное меню в проводнике

RVRdp пишет:

Как тут скриншот добавить?

Вот тут почитайте.

13

Re: HTA: Передача аргументов в .hta через контекстное меню в проводнике

Xameleon, даже при регистрации mscomct2.ocx компонент не отображается.  И, кстати, никто не удивился синтаксису с оператором «::»?

14 (изменено: alexii, 2012-04-16 15:10:47)

Re: HTA: Передача аргументов в .hta через контекстное меню в проводнике

Так что там с синтаксисом оператора «::»?

15 (изменено: sen52, 2012-10-14 13:44:11)

Re: HTA: Передача аргументов в .hta через контекстное меню в проводнике

Нашел про это только здесь:
http://www.balagurov.com/archive/script … /index.htm