Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как запустить ярлык с помощью WSH (https://javascript.ru/forum/misc/67086-kak-zapustit-yarlyk-s-pomoshhyu-wsh.html)

andrey76123 28.01.2017 08:54

Как запустить ярлык с помощью WSH
 
пытаюсь запустить ярлык из скрипта, но никак не получается

fso = new ActiveXObject("Scripting.FileSystemObject");
wsh = new ActiveXObject("WScript.Shell");
WindowsDir = fso.GetSpecialFolder(0);

lnkrun = "c:\\test.lnk";
exerun = WindowsDir + "\\notepad.exe";
wordir = "c:\\";

var s = wsh.CreateShortcut(lnkrun);
s.WindowStyle = 4;
s.IconLocation = exerun;
s.TargetPath = exerun;
s.WorkingDirectory = wordir;
s.Save();

wsh.Run( lnkrun ); // не работает
wsh.Run( "start " + lnkrun ); // ошибка: не найден файл (не может найти start)


ярлык C:\test.lnk успешно создается и ведет к Блокноту, может быть запущен из проводника, но в скриптах возникают проблемы, в первом вызове wsh.Run вообще ничего не происходит, во втором вываливается ошибка (даже если точно прописать путь к программе start которая явно существует)

не работает на win10, win7, даже на XP не пашет, в чем может быть проблема?

laimas 28.01.2017 10:18

VBS

Set WshShell = CreateObject("WScript.Shell")
path = WshShell.CurrentDirectory + "\"
fldr = WshShell.SpecialFolders("Desktop") + "\"

Set WshShortcut = WshShell.CreateShortcut(fldr + "test.lnk")
WshShortcut.IconLocation ="shell32.dll, 1"
WshShortcut.Description = "Test"
WshShortcut.Arguments = "C:\file.txt"
WshShortcut.TargetPath =  "notepad.exe"
WshShortcut.WindowStyle = 1
WshShortcut.WorkingDirectory = path
WshShortcut.Save

WshShell.Run fldr + "test.lnk"

andrey76123 28.01.2017 12:05

laimas спасибо, но решение нужно именно на JS

решение нашлось, может кому пригодится:
(запуск ярлыка идет через командную строку насколько я понял)

wsh = new ActiveXObject("WScript.Shell");
lnk = "c:\\test.lnk";
wsh.Run( "%comspec% /c \"" + lnk + "\"" , 0 )

laimas 28.01.2017 12:12

Разница большая? Там reateObject, а там ActiveXObject, и путь указать корректно.

andrey76123 28.01.2017 12:38

laimas твой пример не работает, возникает ошибка "Не удается найти указанный файл" на строке 14

laimas 28.01.2017 12:46

Цитата:

Сообщение от andrey76123
laimas твой пример не работает, возникает ошибка "Не удается найти указанный файл" на строке 14

Ну естественно, его надо еще и положить туда. Это пример как запустить ярлыком Блокнот с передачей по аргументу файла, который он откроет.

laimas 28.01.2017 13:24

var wsh = new ActiveXObject("WScript.Shell"),
    pth = wsh.CurrentDirectory + "\\", //текущая папка
    lnk = wsh.CreateShortcut("main.lnk"); //создать ярлык в текущей папке

lnk.IconLocation = "shell32.dll, 1";
lnk.Description = "Test";
lnk.Arguments = "test.txt";
lnk.TargetPath =  "notepad.exe";
lnk.WindowStyle = 1;
lnk.WorkingDirectory = pth;
lnk.Save();

wsh.Run(lnk); //блокнот откроется с запросом на создание файла, если его нет в текушей папке


Часовой пояс GMT +3, время: 15:25.