Показать полную графическую версию : [решено] Запуск команд ms-settings
Нужно запустить команду ms-settings:lockscreen с помощью VBS.
BKPB, а как её запустить без «помощи VBS»? И под какой ОС?
Iska, Вот так, с помощью батника:
@echo off
start ms-settings:lockscreen
Система Windows 10.
Просто так не нравится, потому что сначала запускается окно .cmd, а только потом срабатывает команда.
Команды ms-settings
https://wd-x.ru/tablica-komand-dlya-vyzova-parametrov-windows-10/
птичка0001
22-06-2020, 16:32
1. Используйте поиск для доступа к параметрам.
2. Создайте ярлык.
P.S. Лучше, конечно, поиск :)
птичка0001, мне нужно не просто открывать Параметры, а чтобы они открывались после выполнения определённого задания в скрипте.
Если будет ответ, что с помощью VBS это сделать невозможно, тогда вопрос будет закрыт.
А пока, подожду.
Просто так не нравится, потому что сначала запускается окно .cmd, а только потом срабатывает команда. »
Можно передать пакетник cmd в качестве параметра такому скрипту:
Set oTmp = CreateObject("WScript.Shell")
oTmp.Run """" & WScript.Arguments(0) & """", 0, False
ну или напрямую:
Set oTmp = CreateObject ("WScript.shell")
oTmp.run "cmd /c start ms-settings:lockscreen", 0, False
YuS_2, Второй вариант, вполне устраивает.
Спасибо за помощь.
птичка0001
22-06-2020, 22:10
BKPB, из контекста Ваше «дополнение» не следовало, поэтому были предложены такие варианты. Тогда используйте современные инструменты для достижения всех Ваших целей, а не .bat, cmd и иже с ними. Будет проще.
YuS_2, так тогда проще — не нужен пакетный файл (не проверялось):
WScript.CreateObject("WScript.Shell").Run "ms-settings:lockscreen", 0, False
так тогда проще — не нужен пакетный файл (не проверялось) »
Да, или так... кстати, во втором, моем варианте, пакетник тоже не нужен...
Но я и не пробовал даже, именно так... попробовал из консоли:
ms-settings:lockscreen
а в ответ:
Синтаксическая ошибка в имени файла, имени папки или метке тома.
поэтому сразу и start прилепил... :)
Вообще, какие-то достаточно странные команды... со start работают, а без него - ошибка (в консоли powershell аналогично), а прямой запуск из wsh - пожалуйста. Какое-то ретроградство от микрософт проявилось... :)
...
Хмм, как оказалось, это не команды вовсе, это всего-навсего URI (Uniform Resource Identifier) (https://docs.microsoft.com/en-us/windows/uwp/launch-resume/launch-default-app)
и такая команда должна работать даже в адресной строке браузера... что, собственно и происходит при запуске через start.
Как говорится, век живи, век учись, всё равно... и т.д. :)
Только одно непонятно: почему напрямую в консоли, без start не работает, при этом из "Выполнить" (Win+R) - вполне себе... чудят, видимо, индусы...
птичка0001
23-06-2020, 09:40
>>>Выполнить" (Win+R) - вполне себе..
Потому что распознаёт URI
Потому что распознаёт URI »
вот и вопрос, почему консоль не научили? Ведь, файлы по ассоциациям открывает же...
птичка0001
23-06-2020, 17:16
>>>не научили
Я такого не говорила :)
Ну а как Вы, например, тот же калькулятор, простите, открываете? Win+R и в консоли?
Также см. на следующие простые примеры (c#):
System.Diagnostics.Process.Start("ms-settings:lockscreen");
System.Diagnostics.Process.Start("app:");
System.Diagnostics.Process.Start("app:http://www.google.com");
YuS_2, WshShell.Run() — это не прямой запуск, не CreateProcess(), это аналог ShellExecute() — посему там отрабатывают простые shell-команды и пути AppPaths. Про консоли и Win-R — аналогично, та же разница.
Ну а как Вы, например, тот же калькулятор, простите, открываете? »
так:
win32calc.exe
или по алиасу:
calc.exe
и это работает везде...
Также см. на следующие простые примеры (c#) »
А какая тут связь с нашим вопросом?
Про консоли и Win-R — аналогично, та же разница. »
так в том и вопрос... в чем разница-то?
Ведь, shell-команды отрабатывают в консоли? Почему не работают URI?
Ну, да ладно, всё равно, ничего не изменим... вопросы больше риторические...
птичка0001
23-06-2020, 22:24
>>>Почему не работают URI
Боги... Работают же... Есть же start...
Боги... Работают же... Есть же start... »
Только одно непонятно: почему напрямую в консоли, без start не работает »
птичка0001
23-06-2020, 23:24
К слову, System.Diagnostics.Process.Start похож на ShellExecute.
Используйте ShellExecute...
Ведь, shell-команды отрабатывают в консоли? »
Нет, не отрабатывают.
Можете сравнить:
Option Explicit
Const WshRunning = 0
Const WshFinished = 1
Const WshFailed = 2
Const strShellName = "shell:AppData"
With WScript.CreateObject("WScript.Shell")
.Run """" & strShellName & """", 1, False
WScript.Sleep 2000
With .Exec("""" & strShellName & """")
If .Status <> WshFailed Then
Do Until .Status = WshRunning
WScript.Sleep 100
Loop
Do
WScript.Sleep 100
Loop Until .Status = WshFinished
WScript.Echo "Execute [" & strShellName & "] successfully."
Else
WScript.Echo "Can't execute [" & strShellName & "]."
WScript.Quit 1
End If
End With
End With
WScript.Quit 0
WshShell.Run() — это ShellExecute(), WshShell.Exec() — «чистый» CreateProcess().
Ведь, файлы по ассоциациям открывает же... »
Да.
Есть же start... »
start — это и есть ShellExecute() из-под консоли.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.