Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Проблема с hta скриптом (http://forum.oszone.net/showthread.php?t=241013)

axmed0207 21-08-2012 06:06 1973769

Проблема с hta скриптом
 
Здраствуйте,
Есть скрипт 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 1973772

Цитата:

Цитата axmed0207
В итоге другая оболочка нормально запускается, НО в ней не работают никакие ссылки на запуск программ и скриптов - выдаются сообщения, что не может найти файлы

Потому что текущей папкой остается та, откуда запущен исходный скрипт.
How Can I Change the Working Folder of a Script?

axmed0207 21-08-2012 09:36 1973808

Спасибо за ответ,
Но реализовать пока не получилось. *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 1974101

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 1974393

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


Время: 13:05.

Время: 13:05.
© OSzone.net 2001-