Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.01.2017, 08:54
Новичок на форуме
Отправить личное сообщение для andrey76123 Посмотреть профиль Найти все сообщения от andrey76123
 
Регистрация: 28.01.2017
Сообщений: 3

Как запустить ярлык с помощью 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 не пашет, в чем может быть проблема?
Ответить с цитированием
  #2 (permalink)  
Старый 28.01.2017, 10:18
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

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"

Последний раз редактировалось laimas, 28.01.2017 в 10:20.
Ответить с цитированием
  #3 (permalink)  
Старый 28.01.2017, 12:05
Новичок на форуме
Отправить личное сообщение для andrey76123 Посмотреть профиль Найти все сообщения от andrey76123
 
Регистрация: 28.01.2017
Сообщений: 3

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

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

wsh = new ActiveXObject("WScript.Shell");
lnk = "c:\\test.lnk";
wsh.Run( "%comspec% /c \"" + lnk + "\"" , 0 )
Ответить с цитированием
  #4 (permalink)  
Старый 28.01.2017, 12:12
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Разница большая? Там reateObject, а там ActiveXObject, и путь указать корректно.
Ответить с цитированием
  #5 (permalink)  
Старый 28.01.2017, 12:38
Новичок на форуме
Отправить личное сообщение для andrey76123 Посмотреть профиль Найти все сообщения от andrey76123
 
Регистрация: 28.01.2017
Сообщений: 3

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

Последний раз редактировалось andrey76123, 28.01.2017 в 12:41.
Ответить с цитированием
  #6 (permalink)  
Старый 28.01.2017, 12:46
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от andrey76123
laimas твой пример не работает, возникает ошибка "Не удается найти указанный файл" на строке 14
Ну естественно, его надо еще и положить туда. Это пример как запустить ярлыком Блокнот с передачей по аргументу файла, который он откроет.
Ответить с цитированием
  #7 (permalink)  
Старый 28.01.2017, 13:24
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

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); //блокнот откроется с запросом на создание файла, если его нет в текушей папке
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как создать галерею с помощью jQuery MariyaIgorevna jQuery 4 02.03.2016 01:14
Как изменить Select с помощью JS Alex921 Общие вопросы Javascript 4 04.01.2016 16:55
Как распарсить данные с помощью React.js? Heisenberg Библиотеки/Тулкиты/Фреймворки 1 17.11.2015 16:43
Как запустить несколько флеш видео роликов в этом скрипте? elena-kisa Ваши сайты и скрипты 0 20.08.2015 10:39
Как создать двумерный массив с помощью циклов. dima*** Ваши сайты и скрипты 30 16.12.2012 13:58