PDA

Показать полную графическую версию : Автовход в Radmin Viewer


Sisin
28-09-2019, 22:40
Хотел сделать автовход в Radmin Viewer, чтобы не вводить пароль. Нашел vbs скрипт, но он срабатывает, только если включена английская раскладка по умолчанию. Добавление в скрипт комбинации клавиш переключения раскладки не помогает.

Господа, подскажите, пожалуйста как выйти из ситуации, не включая английскую раскладку по умолчанию?
set WshShell = WScript.CreateObject ("WScript.Shell")
WshShell.Run "Radmin.exe /connect:111.11.11.111:4099"
WScript.Sleep 1000
WshShell.AppActivate "Система безопасности Radmin: 111.11.11.111"
WScript.Sleep 500
WshShell.SendKeys "login{TAB}"
WScript.Sleep 500
WshShell.SendKeys "password{ENTER}"

PS: Можно ли как-то на худой конец в начале переключать английскую раскладку по умолчанию, а потом опять возвращать русскую раскладку по умолчанию?

Iska
28-09-2019, 23:25
Sisin, .SendKeys() вообще мало пригоден для какой-либо автоматизации, слишком много подводных камней и никакой гарантии.

В лучшем случае смотрите либо в сторону чистого AutoIt, либо задействуйте библиотеку AutoItX3.dll для работы из-под WSH.

Sisin
29-09-2019, 00:43
В лучшем случае смотрите либо в сторону чистого AutoIt, либо задействуйте библиотеку AutoItX3.dll для работы из-под WSH. »
А как через AutoItX3.dll и vbs запустить этот скрипт:
#include <Constants.au3>

#Region ;Application and Tray Options
If StringRight(@ScriptName, 3) = 'au3' Then Opt('TrayIconDebug', 1)
Opt('TrayAutoPause', 0)
Opt('TrayOnEventMode', 1)
Opt('WinTitleMatchMode', 2)

TrayItemSetText($TRAY_ITEM_PAUSE, 'Pause')
TrayItemSetText($TRAY_ITEM_EXIT, 'Exit')
#EndRegion

$section = $CmdLineRaw
If $CmdLineRaw = '' Then $section = 'Radmin'

_Radmin()

Func _Radmin()
$path = IniRead(@ScriptDir & '\radmin.ini', $section, 'Run', '')
If $path = '' Then $path = @ScriptDir & '\Radmin.exe'

If Not FileExists($path) Then
MsgBox(48, 'No Radmin.exe', 'Radmin.exe not found. Put program to Radmin folder.')
Exit
EndIf

$params = IniRead(@ScriptDir & '\radmin.ini', $section, 'Parameters', '')
If $params <> '' Then $params = ' ' & $params

$login = IniRead(@ScriptDir & '\radmin.ini', $section, 'Login', '')
$password = IniRead(@ScriptDir & '\radmin.ini', $section, 'Password', '')
If $path = '' Or $login = '' Or $password = '' Then Return 0

$loginGate = IniRead(@ScriptDir & '\radmin.ini', $section, 'GateLogin', '')
$passwordGate = IniRead(@ScriptDir & '\radmin.ini', $section, 'GatePassword', '')

Run($path & $params)

$aPath = StringSplit($path, '\', 1)
$exe = $aPath[$aPath[0]]

If $loginGate <> '' Then
_Login($loginGate, $passwordGate, $exe)
EndIf

_Login($login, $password, $exe)

$login = ''
$password = ''

$loginGate = ''
$passwordGate = ''

Return 1
EndFunc ;==>_Radmin

Func _Login($log, $pass, $exe)
While ProcessExists($exe) Or WinExists('Radmin')
If WinExists('[TITLE:Radmin security; CLASS:#32770]', '') Then
WinActivate('[TITLE:Radmin security; CLASS:#32770]', '')
ControlSetText('[TITLE:Radmin security; CLASS:#32770]', '', '[CLASS:Edit; INSTANCE:1]', $log)
ControlSetText('[TITLE:Radmin security; CLASS:#32770]', '', '[CLASS:Edit; INSTANCE:2]', $pass)
ControlClick('[TITLE:Radmin security; CLASS:#32770]', '', '[CLASS:Button; INSTANCE:2]')
ExitLoop
EndIf

If WinExists('[TITLE:Система безопасности Radmin; CLASS:#32770]', '') Then
WinActivate('[TITLE:Система безопасности Radmin; CLASS:#32770]', '')
ControlSetText('[TITLE:Система безопасности Radmin; CLASS:#32770]', '', '[CLASS:Edit; INSTANCE:1]', $log)
ControlSetText('[TITLE:Система безопасности Radmin; CLASS:#32770]', '', '[CLASS:Edit; INSTANCE:2]', $pass)
ControlClick('[TITLE:Система безопасности Radmin; CLASS:#32770]', '', '[CLASS:Button; INSTANCE:2]')
ExitLoop
EndIf

Sleep(100)
WEnd
EndFunc ;==>_Login

Iska
29-09-2019, 01:59
Sisin, никак. Смотрите примеры работы с библиотекой AutoItX3.dll в каталоге %ProgramFiles%\AutoIt3\AutoItX\Examples\VBScript установленного AutoIt, здесь: AutoItX (https://www.script-coding.com/AutiItX.html) (в последних версиях убраны функции работы с реестром и ini-файлами), здесь: Что есть ActiveX/COM (AutoItX)? | Русское сообщество AutoIt (http://autoit-script.ru/threads/chto-est-activex-com-autoitx.55/).

Думаю, Вам проще будет собрать исполняемый файл из .au3 и пользовать (разве что антивирусы могут возбуждаться на такую связку).




© OSzone.net 2001-2012