Sendkeys из гибридного файла Batch-VBScript - PullRequest
1 голос
/ 27 февраля 2020

Не могу понять, что я здесь не так делаю.

Сценарий проверки ниже, в котором я собираюсь переключить настройку возможности включения Bluetooth через метод SendKeys:

@if (@CodeSection == @Batch) @then

@echo off

set SendKeys=CScript //nologo //E:JScript "%~F0"

start "" /b explorer.exe ms-settings:bluetooth

%SendKeys% "{TAB}" & %SendKeys% " "

goto :EOF

@end

// JScript section
var WshShell = WScript.CreateObject("WScript.Shell");
WshShell.AppActivate "settings":WScript.Sleep 300
WshShell.SendKeys(WScript.Arguments(0));

Он не выполняет нажатия клавиш, просто открывает окно настроек Bluetooth и остается без изменений.

Любая помощь приветствуется.

Ответы [ 2 ]

0 голосов
/ 27 февраля 2020
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run "ms-settings:bluetooth"
WScript.Sleep 1000
WshShell.SendKeys "{TAB}"
WshShell.SendKeys " "
WScript.Sleep 100
WshShell.SendKeys "%{F4}"

ПРИМЕЧАНИЕ. Я соблюдаю этот список правил. Моя программа проста, а не излишне сложна, косвенна и делает вещи неправильно.

0 голосов
/ 27 февраля 2020

Итак, попробуйте этот код:

<!-- : || @cls & @echo off && mode 50,03 & title <nul && title ...\%~nx0 && explorer.exe ms-settings:bluetooth
%__APPDIR__%wScript.exe "%~dpnx0?.wsf" && 2>nul >nul "%__APPDIR__%taskkill.exe" /FI "WindowTitle eq settings*"
goto :EOF&:: --><job><script language="vbscript">Set WshShell=WScript.CreateObject("WScript.Shell")
WshShell.AppActivate "Settings*":WScript.Sleep 500:WshShell.SendKeys "{ESC}":WScript.Sleep 100
WshShell.SendKeys "{TAB}":WshShell.SendKeys " ":WScript.Sleep 100</script></job>

...