Запуск проги из буфере обмена
Всем привет. Есть скрипт, копирую полный путь к программе, или папке, блокноту, и т.д, и они запускаются при запуске скрипта. Оно хоть и срабатывает, но всплывает ошибка. Иногда бывает без ошибки, но это редко. Бывает и совсем не работает. Помогите подправить. Заранее спасибо.
Set obj = CreateObject("InternetExplorer.Application")
obj.Navigate("about:blank")
clip = obj.document.parentWindow.clipboardData.getData("text")
obj.Quit
Set WshShell = CreateObject("WScript.Shell")
RetCode = WshShell.Run(clip, 1, True)
|
Вы уверены, что в clip всегда окажется путь до программы?
Не исключено, что закрывать указанный объект Вам следует на последнем этапе, уже после запуска программы.
На этапе отладки отслеживайте/ мониторьте/ проверяйте/ наблюдайте значение clip и возможно Вы увидите, что в переменной не всегда то, что ожидается.
|
обычно берётся через объект htmlfile
Код:
clip = CreateObject("htmlfile").parentWindow.clipboardData.getData("Text")
MsgBox(clip)
|
DJ Mogarych |
08-06-2023 09:43 3010204 |
Powershell
script.ps1
Код:
if (Test-Path (Get-Clipboard)) {start $path}
Ярлык для запуска
Код:
powershell -f "D:\temp\script.ps1"
|
:nono:, раздел ведь VBS/WSH/JS
|
Цитата:
Цитата NickM
Вы уверены, что в clip всегда окажется путь до программы? »
|
А как же, конечно уверен.
Цитата:
Цитата Sham
clip = CreateObject("htmlfile").parentWindow.clipboardData.getData("Text")
MsgBox(clip) »
|
Это же просто появляется окошко с копированным путём. Если это надо куда то в мой вставить-заменить, то всяко пробовал, ошибки выдаёт. Подскажите куда ставить?
|
Цитата:
Цитата denis19
Это же просто появляется окошко с копированным путём. »
|
Ну так ведь это пример для Вас!
Цитата:
Цитата denis19
Если это надо куда то в мой вставить-заменить, то всяко пробовал, ошибки выдаёт. »
|
Так покажите, что и куда Вы вставляли?
Цитата:
Цитата denis19
Подскажите куда ставить? »
|
Ну, например, так:
Код:
set fso = CreateObject("Scripting.FileSystemObject")
clip = CreateObject("htmlfile").parentWindow.clipboardData.getData("Text")
if (fso.FileExists(clip)) Then
Set WshShell = CreateObject("WScript.Shell")
RetCode = WshShell.Run(clip, 1, True)
end if
Цитата:
Цитата denis19
А как же, конечно уверен. »
|
Тогда этого быть не должно:
Цитата:
Цитата denis19
но всплывает ошибка. Иногда бывает без ошибки, но это редко. »
|
|
DJ Mogarych |
08-06-2023 14:13 3010232 |
Только потому, что у автора был такой исходный скрипт. Но если это принципиально, извините.
|
Ошибка всё равно всплывает. Надо убирать цифру в конце. Вот так запускает.
clip = CreateObject("htmlfile").parentWindow.clipboardData.getData("Text")
MsgBox(clip)
Set WshShell = CreateObject("WScript.Shell")
RetCode = WshShell.Run(clip, True)
|
Цитата:
Цитата denis19
Надо убирать цифру в конце. Вот так запускает. »
|
Так Вы какое приложение пытаетесь запустить?
Цитата:
3.4. Run
Синтаксис:
Run(<Command>,<WindowStyle>,<WaitOnReturn>)
Назначение: создаёт новый независимый процесс, который запускает заданное приложение.
Параметры:
<Command> - строка, командная строка запуска приложения.
<WindowStyle> - необязательный, число. Определяет вид окна запускаемого приложения. Некоторые возможные значения:
0 - Не отображает окно.
1 - Активизирует и отображает окно.
2 - Активизирует окно и отображает его в свёрнутом виде.
3 - Активизирует окно и отображает его в максимизированном виде.
<WaitOnReturn> - необязательный, булево (число). True - сценарий возобновит работу только после завершения вызванного процесса. False (по умолчанию) - управление передаётся сразу обратно в сценарий.
Описание: если параметр "WaitOnReturn" установлен в True, метод возвращает код выхода вызванного приложения. Иначе метод всегда возвращает ноль.
|
При передаче параметров в процедуру/ функцию следует соблюдать их порядок и количество.
Т.е. Вы ошибочно предполагаете, что опустили второй параметр.
|
Цитата:
Цитата NickM
Так Вы какое приложение пытаетесь запустить? »
|
В вопросе же есть. Блокноты, папки. Но вот сейчас мной доработанный с папками и прочими нормально, только exe не запускает.
|
Это не приложение.
Вам следует различать сущности;
Цитата:
Цитата denis19
только exe не запускает. »
|
По какому пути находится приложение?
Не забывайте о возможных пробелах в пути и обрамляйте кавычками.
|
Цитата:
Цитата NickM
По какому пути находится приложение? »
|
Глубоковато, там папка в папке. Но зато другое запускается. Я уже запутался, чего ему надо.
Там обычный способ копирование пути, пробелов не может быть. Всё просто, копируешь полный путь, кнопка в контекстном меню, нажимаешь скрипт и открывается программа, фото, папка, да хоть что, смотря что копировал, что в буфере в данный момент.
|
Цитата:
Цитата NickM
Не забывайте о возможных пробелах в пути и обрамляйте кавычками. »
|
Я понял. Чтоб запускалось абсолютно всё, и как бы глубоко не находился файл в подпапках, то надо чтоб путь был в кавычках. Есть ли такой вариант чтоб запускалось без кавычек в пути?
clip = CreateObject("htmlfile").parentWindow.clipboardData.getData("Text")
Set WshShell = CreateObject("WScript.Shell")
RetCode = WshShell.Run(clip)
|
в кавычках это так примерно
Код:
clip = """" & clip & """"
Дублированные кавычки - это экранирование кавычки внутри строки. & - конкатенация строк.
|
Цитата:
Цитата Sham
clip = """" & clip & """" »
|
Вот не знаю куда вставлять или заменять. Можно готовый пример скрипта?
|
Код:
dim clip, fso
clip = CreateObject("htmlfile").parentWindow.clipboardData.getData("Text")
set fso = CreateObject("Scripting.FileSystemObject")
if not fso.FileExists(clip) then call WSH.Echo("not a path:", clip) : WSH.Quit(1)
if InStr(clip, " ") then clip = """" & clip & """"
call CreateObject("WScript.Shell").Run(clip, 1, false)
если run с true, то скрипт не завершается сразу и ждёт закрытия дочернего процесса. false скрипт сразу выходит.
|
Время: 21:25.
© OSzone.net 2001-