Войти

Показать полную графическую версию : [решено] Проблема с hta скриптом


axmed0207
21-08-2012, 06:06
Здраствуйте,
Есть скрипт hta в виде графической оболочки со ссылками (меню установочного диска), который лежит в корне диска. В этом скрипте необходимо сделать ссылку на другой аналогичный скрипт, который находится в подкаталоге диска. Запуск скрипта делаем JS функцией:
function onClickNextScreen(sURL)
{
var oShell = new ActiveXObject("WScript.Shell");
oShell.Run(sURL);
}
Вызов функции делаем в событии OnClick объекта так:
onclick="onClickNextScreen('folder\\script.hta')"

В итоге другая оболочка нормально запускается, НО в ней не работают никакие ссылки на запуск программ и скриптов - выдаются сообщения, что не может найти файлы, хотя "ошибочный" путь выдает правильный (через run нормально все открывает по ссылке).
Вот. При этом, если запускать script.hta из того же каталога
onclick="onClickNextScreen('script.hta')"
то все работает отлично, без ошибок.
В чем может быть проблема? Заранее спасибо за советы.

Petya V4sechkin
21-08-2012, 06:30
В итоге другая оболочка нормально запускается, НО в ней не работают никакие ссылки на запуск программ и скриптов - выдаются сообщения, что не может найти файлы
Потому что текущей папкой остается та, откуда запущен исходный скрипт.
How Can I Change the Working Folder of a Script? (http://blogs.technet.com/b/heyscriptingguy/archive/2005/02/01/how-can-i-change-the-working-folder-of-a-script.aspx)

axmed0207
21-08-2012, 09:36
Спасибо за ответ,
Но реализовать пока не получилось. *facepalm*
На любую попытку сменить oShell.CurrentDirectory из функции JS скрипт отвечает без ошибок, но директория не меняется -_-
Гугл не помог.

Изначальный рабочий каталог - диск Е.
Нужно сменить на Е:\folder.
function onClickNextScreen(sURL)
{
var oShell = new ActiveXObject("WScript.Shell");
oShell.Run(sURL);
oShell.CurrentDirectory = "\folder";
}
Вроде все же правильно?.. По разному пробывал писать, может подскажет кто-нибудь, что тут не так и как лучше сделать?

Petya V4sechkin
21-08-2012, 17:53
axmed0207, как-то так:
function onClickNextScreen(sURL)
{
var oShell = new ActiveXObject("WScript.Shell");
var pos = sURL.lastIndexOf('\\');
if (pos >= 0)
{
oShell.CurrentDirectory = sURL.substring(0, pos + 1);
oShell.Run(sURL.substring(pos + 1));
}
else
oShell.Run(sURL);
}

axmed0207
22-08-2012, 02:33
Все работает! Спасибо огромное за помощь!
Но моих знаний не хватает, чтобы понять смысл конструкции... Тяжело быть бестолковым... :(
Пошел разбираться.




© OSzone.net 2001-2012