Понадобилось мне запускать из своей программы Radmin Viewer 3.4 с автоматическим вводом имени и пароля.
В стандартные функции у радмина предусмотрено только задание хоста и
порта для подключения.
Выдержка с оф сайта радмина:
Соединение с удаленным компьютером без использования адресной книги.
/connect:<адрес>:<порт>
Где:
адрес
- IP адрес удаленного компьютера или DNS имя.
порт
- номер порта, который использует Radmin Server, установленный на удаленном компьютере.
Передать имя пользователя и пароль разработчики посчитали небезопасным.
Суть метода взаимодействия с чужими окнами из своего приложения не нова и заключается в том, что нужно в появившееся окно авторизации радмина вставить в соответствующие поля имя пользователя и пароль.
ShellExecute(Handle, 'open', Pchar('Путь к radmin,exe'), Pchar('/connect:IP:4899'), nil, SW_SHOWNORMAL);
З.Ы. Был найден vbs скрипт, который это делал, но я уже накодил свою процедуру. Продублирую и скрипт тут на всякий случай.
set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "radmin.exe /connect:10.0.0.1 /locolor /updates:10 /fullscreen"
WScript.Sleep 4000
WshShell.AppActivate "Enter password for 10.0.0.1"
WScript.Sleep 500
WshShell.SendKeys "yourpassword"
WshShell.SendKeys "{ENTER}"
Выдержка с оф сайта радмина:
"
/connectСоединение с удаленным компьютером без использования адресной книги.
/connect:<адрес>:<порт>
Где:
адрес
- IP адрес удаленного компьютера или DNS имя.
порт
- номер порта, который использует Radmin Server, установленный на удаленном компьютере.
/connect:212.44.120.10:4899
"Передать имя пользователя и пароль разработчики посчитали небезопасным.
Суть метода взаимодействия с чужими окнами из своего приложения не нова и заключается в том, что нужно в появившееся окно авторизации радмина вставить в соответствующие поля имя пользователя и пароль.
Procedure Input_to(ip:string); var wn,wn2: HWND; begin sleep(1000); //найти окно с именем "Система безопасности Radmin: ip" wn:=FindWindow(nil,PChar('Система безопасности Radmin: '+ip)); //найти окно в имени класса которого встречается 'Edit', 1й по счету wn2:=SearchChildWND(wn,'Edit',Pchar(rpass),0); //и поместить туда имя пользователя if wn2 <>0 then SetWindowText_(wn2,Pchar(ruser),length(ruser)); //найти окно с именем "Система безопасности Radmin: ip" wn:=FindWindow(nil,PChar('Система безопасности Radmin: '+ip)); //найти окно в имени класса которого встречается 'Edit', 2й по счету wn2:=SearchChildWND(wn,'Edit',Pchar(rpass),1); //и поместить туда пароль if wn2 <>0 then SetWindowText_(wn2,Pchar(rpass),length(rpass)); //Нажимаем Enter keybd_event(VK_RETURN , 0, 0, 0); //Нажатие Enter. keybd_event(VK_RETURN , 0, KEYEVENTF_KEYUP, 0); //Отпускание Enter. end;Сама программа запускается так:
ShellExecute(Handle, 'open', Pchar('Путь к radmin,exe'), Pchar('/connect:IP:4899'), nil, SW_SHOWNORMAL);
З.Ы. Был найден vbs скрипт, который это делал, но я уже накодил свою процедуру. Продублирую и скрипт тут на всякий случай.
set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "radmin.exe /connect:10.0.0.1 /locolor /updates:10 /fullscreen"
WScript.Sleep 4000
WshShell.AppActivate "Enter password for 10.0.0.1"
WScript.Sleep 500
WshShell.SendKeys "yourpassword"
WshShell.SendKeys "{ENTER}"