Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Автовход в Radmin Viewer (http://forum.oszone.net/showthread.php?t=342367)

Sisin 28-09-2019 22:40 2889996

Автовход в Radmin Viewer
 
Хотел сделать автовход в 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 2889998

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

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

Sisin 29-09-2019 00:43 2890001

Цитата:

Цитата Iska
В лучшем случае смотрите либо в сторону чистого 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 2890005

Sisin, никак. Смотрите примеры работы с библиотекой AutoItX3.dll в каталоге %ProgramFiles%\AutoIt3\AutoItX\Examples\VBScript установленного AutoIt, здесь: AutoItX (в последних версиях убраны функции работы с реестром и ini-файлами), здесь: Что есть ActiveX/COM (AutoItX)? | Русское сообщество AutoIt.

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


Время: 06:39.

Время: 06:39.
© OSzone.net 2001-