Имеется форма с двумя чекбоксами и двумя кнопками.
Не знаю, как сделать так, чтобы при нажатии на первую кнопку вызывалась функция с одним параметром и выполнялось бы одно действие, а если нажата другая кнопка, то функция выполняла бы другие действия.
вот наработки:
Основной скрипт:
Клиентская часть:
Не знаю, как сделать так, чтобы при нажатии на первую кнопку вызывалась функция с одним параметром и выполнялось бы одно действие, а если нажата другая кнопка, то функция выполняла бы другие действия.
вот наработки:
Основной скрипт:
Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <ListBoxConstants.au3>
#include <EditConstants.au3>
#include <ComboConstants.au3>
$SrvHost = "fs-zvk"
$etc = @ScriptDir & "\etc\"
$Client = $etc & "Client.exe"
$TestConnect = $etc & "Connect.exe"
$psexec= $etc & "psexec.exe"
$DWPath=@ProgramFilesDir & "\SolarWinds\DameWare Remote Support\DWRCC.EXE"
$DWPath9=@ProgramFilesDir & "\SolarWinds\DameWare Remote Support 9.0\DWRCC.EXE"
Local $Font = "Comic Sans MS", $Mylist
Const $Title= "Remote Assistance"
$Window = GUICreate($Title, 350, 440) ;Создаем окно
GUISetState(@SW_SHOW) ; показывает созданное окно
GUISetBkColor(0xE0FFFF) ;Фон окна
GUICtrlCreateGroup("Введите имя компьютера или IP: ", 60, 5, 210, 60)
$InputHost = GUICtrlCreateInput('', 65, 28, 200, 22, $WS_BORDER) ;оле ввода имени хоста
GUICtrlCreateGroup("Введите логин и пароль Администратора: ", 19, 85, 310, 135)
GUICtrlCreateLabel ("Введите логин", 110, 107, 75)
GUICtrlCreateLabel ("Введите пароль", 110, 159, 81)
$domain = GUICtrlCreateCheckbox("fgup-ycct6\", 27, 130, 72, 16)
$InputLogin = GUICtrlCreateInput('', 100, 128, 220, 22, $WS_BORDER)
$InputPass = GUICtrlCreateInput('', 100, 180, 220, 22, BitOR($ES_PASSWORD, $WS_BORDER))
$InstallButton = GUICtrlCreateButton("Установить",40, 300, 70) ;Создание кнопок
$ConnectButton = GUICtrlCreateButton("Подключиться",120, 300, 90) ;Создание кнопок
$EXITButton = GUICtrlCreateButton("Выход", 220, 300, 70)
$DWCheck = GUICtrlCreateCheckbox("Служба DameWare", 60, 240, 210, 16)
$UVNCCheck = GUICtrlCreateCheckbox("Сервер UltraVNC", 60, 270, 210, 16)
$Mylist = GUICtrlCreateList("", 7, 343, 335, 80, $WS_BORDER+$WS_VSCROLL+$LBS_NOINTEGRALHEIGHT)
GUICtrlSetState($InstallButton, $GUI_DISABLE)
GUICtrlSetState($ConnectButton, $GUI_DISABLE)
Func SetButtonState()
If GUICtrlRead($DWCheck) = $GUI_CHECKED _
or GUICtrlRead($UVNCCheck) = $GUI_CHECKED _
Then
GUICtrlSetState($InstallButton, $GUI_ENABLE)
GUICtrlSetState($ConnectButton, $GUI_ENABLE)
Else
GUICtrlSetState($InstallButton, $GUI_DISABLE)
GUICtrlSetState($ConnectButton, $GUI_DISABLE)
EndIf
EndFunc
If FileExists($etc)=0 Then
MsgBox(16,$Title,"Каталог "&$etc&" не найден!"&@CRLF&" Выход!",4096)
Exit
EndIf
; Запускается цикл опроса GUI до тех пор пока окно не будет закрыто
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
ExitLoop
Case $DWCheck
SetButtonState()
Case $UVNCCheck
SetButtonState()
Case $InstallButton
$Host=GUICtrlRead($InputHost) ;Читаем, что ввели в поле хоста
$Login=GUICtrlRead($InputLogin) ;Читаем, что ввели в поле логина
$Pass=GUICtrlRead($InputPass) ;Читаем, что ввели в поле пароля
Start(Install)
Case $EXITButton
Exit
Case $ConnectButton
$Host=GUICtrlRead($InputHost)
$Login=GUICtrlRead($InputLogin) ;Читаем, что ввели в поле логина
$Pass=GUICtrlRead($InputPass)
Start(Connect)
EndSwitch
WEnd
Func Start()
GUICtrlSetData($mylist, "")
;Проверка на пустоту в полях
If $Host <> "" Then
GUICtrlSetData($Mylist, "Компьютер: " & $Host)
$Ping=Ping($Host,1)
$Ping2=Ping($SrvHost,1)
If ($Ping <> 0) Then
If ($Ping2 <> 0) Then
GUICtrlSetData($Mylist, "Компьютер: " & $Host & " доступен )")
GUICtrlSetData($Mylist, "Компьютер: " & $SrvHost & " доступен )")
if $Login <> "" And $Pass <> "" Then
GUICtrlSetData($Mylist, "Выполняется проверка логина и пароля...")
If GUICtrlRead ($domain) = $GUI_CHECKED Then
$Login="fgup-ycct6\" & $Login
Else
$Login=$Host&"\" & $Login
EndIf
$Auth=RunWait($psexec & " \\" & $Host & " -u " & $Login & " -p " & $Pass & " cmd.exe /c ping 127.0.0.1 -n 1") ;Проверка правильности логина и пароля
If $Auth = 0 Then
GUICtrlSetData($Mylist, "Логин и пароль верны )")
Sleep(1000)
;если функция Start() вызвана с параметром Install
If GUICtrlRead ($DWCheck) = $GUI_CHECKED Then
DWInstall()
EndIf
If GUICtrlRead ($UVNCCheck) = $GUI_CHECKED Then
UVNCInstall()
EndIf
;Если функция Start() вызвана с параметром Connect
If GUICtrlRead ($DWCheck) = $GUI_CHECKED Then
ConnectDW()
EndIf
If GUICtrlRead ($UVNCCheck) = $GUI_CHECKED Then
ConnectUVNC()
EndIf
Else
MsgBox(48,$Title,"Не правильный логин или пароль "&@CRLF&"Попробуйте еще раз",4096)
EndIf
Else
MsgBox(48,$Title,"Введите логин и пароль!",4096)
EndIf
Else
GUICtrlSetData($Mylist, "Компьютер: " & $SrvHost & " не отвечает (")
GUICtrlSetData($Mylist, "Выход... ")
Sleep(2000)
Exit
EndIf
Else
GUICtrlSetData($Mylist, "Компьютер: " & $Host & " не отвечает (")
GUICtrlSetData($Mylist, "Выход... ")
Sleep(2000)
Exit
EndIf
Else
MsgBox(48,$Title,"Введите имя компьютера или IP!",4096)
EndIf
EndFunc
Func DWInstall()
GUICtrlSetData($Mylist, "Запуск скрипта Client.exe на "& $Host)
$Connect=RunWait($psexec & " -c -f "& "\\" & $Host & " -u " & $Login & " -p " & $Pass &" "& $Client & " idw")
If $Connect=0 Then
GUICtrlSetData($Mylist, "Служба Dameware установлена и запущена на " & $Host)
sleep(2000)
ElseIf $Connect=4 Then
MsgBox(16,$Title,"Произошла ошибка! " & "Код выхода: " & $Connect,4096)
sleep(1000)
Exit
ElseIf $Connect=5 Then
MsgBox(16,$Title,"Перезапуск службы не удался",4096)
Sleep(1000)
Exit
EndIf
EndFunc
Func UVNCInstall()
GUICtrlSetData($Mylist, "Запуск скрипта Client.exe на "& $Host)
$Connect=RunWait($psexec & " -c -f "& "\\" & $Host & " -u " & $Login & " -p " & $Pass &" "& $Client & " ivnc")
If $Connect=0 Then
GUICtrlSetData($Mylist, "Служба UltraVNC уже установлена и запущена на " & $Host)
sleep(2000)
ElseIf $Connect=4 Then
MsgBox(16,$Title,"Произошла ошибка! " & "Код выхода: " & $Connect,4096)
Exit
ElseIf $Connect=5 Then
MsgBox(16,$Title,"Перезапуск службы не удался",4096)
Exit
EndIf
EndFunc
Func ConnectDW()
$LoginDW=GUICtrlRead($InputLogin)
GUICtrlSetData($Mylist, "Запуск скрипта Connect.exe на "& $Host)
$Connect=RunWait($psexec & " -c -f "& "\\" & $Host & " -u " & $Login & " -p " & $Pass &" "& $Client & " dw")
If $Connect=0 Then
GUICtrlSetData($Mylist, "Служба Dameware уже работает на " & $Host&" Подключаюсь...")
sleep(2000)
if FileExists($DWPath) Then
GUICtrlSetData($Mylist, "Подключаюсь к: "& $Host)
Run($DWPath & " -c: -x: -h: -m:" & $Host & " -u:" & $LoginDW & " -p:" & $Pass & " -a:2")
ElseIf FileExists($DWPath9) Then
GUICtrlSetData($Mylist, "Подключаюсь к: "& $Host)
Run($DWPath9 & " -c: -x: -h: -m:" & $Host & " -u:" & $LoginDW & " -p:" & $Pass & " -a:2")
Else
MsgBox(48,$Title,"Dameware не найдена на вашем компьютере")
EndIf
ElseIf $Connect=4 Then
MsgBox(16,$Title,"Произошла ошибка! " & "Код выхода: " & $Connect,4096)
sleep(1000)
Exit
ElseIf $Connect=1 Then
MsgBox(16,$Title,"Служба не запущена!",4096)
Sleep(1000)
ElseIf $Connect=2 Then
MsgBox(16,$Title,"Служба не существует!"&@CRLF&"Запустите установку",4096)
Sleep(1000)
EndIf
EndFunc
Func ConnectUVNC()
GUICtrlSetData($Mylist, "Запуск скрипта Connect.exe на "& $Host)
$Connect=RunWait($psexec & " -c -f "& "\\" & $Host & " -u " & $Login & " -p " & $Pass &" "& $Client & " vnc")
If $Connect=0 Then
GUICtrlSetData($Mylist, "Служба UltraVNC уже работает на " & $Host &" Подключаюсь...")
sleep(2000)
Run($etc & "vncviewer.exe " & $Host &" /password 123456")
ElseIf $Connect=4 Then
MsgBox(16,$Title,"Произошла ошибка! " & "Код выхода: " & $Connect,4096)
sleep(1000)
Exit
ElseIf $Connect=1 Then
MsgBox(16,$Title,"Служба не запущена!",4096)
Sleep(1000)
ElseIf $Connect=2 Then
MsgBox(16,$Title,"Служба не существует!"&@CRLF&"Запустите установку",4096)
Sleep(1000)
EndIf
EndFunc
Клиентская часть:
Код:
#include <Constants.au3>
if $CmdLine[0] > 0 Then
Select
Case $CmdLine[1] = "dw"
$service = "dwmrcs"
Connect()
Case $CmdLine[1] = "vnc"
$service = "uvnc_service"
Connect()
Case $CmdLine[1] = "idw"
$service = "dwmrcs"
Install()
Case $CmdLine[1] = "ivnc"
$service = "uvnc_service"
Install()
EndSelect
EndIf
;Функция для получения вывода от sc
Func _StdOut($pid)
Local $data
ProcessWaitClose($pid)
$data = StdOutRead($pid)
If $data Then
Return $data
Else
MsgBox(0, "", "Не удалось получить вывод программы.")
Exit(4)
EndIf
EndFunc
;Функция для проверки служы на существование
Func IsServiceInstalled(Const $service)
Local $code = RunWait("sc.exe query " & $service)
If $code = 0 Then
Return 2 ;Существует
Else
Return 3 ;Не существует
EndIf
EndFunc
;Функция для проверки запуска службы
Func IsServiceRunning(Const $service)
Local $pid = Run("sc.exe query " & $service, "", @SW_HIDE, $STDOUT_CHILD)
Local $data = _StdOut($pid)
;MsgBox(0, "", $data)
If StringRegExp($data, "[^\r\n]+RUNNING") Then
; "ЗАПУЩЕНА"
Return 0
ElseIf StringRegExp($data, "[^\r\n]+STOPPED") Then
;Return "ОСТАНОВЛЕНА"
Return 1
Else
;Return "ФИГ ЗНАЕТ"
MsgBox(0,"","Не удалось определить статус службы: " & $service)
EndIf
EndFunc
Func Connect()
$InstFunc=IsServiceInstalled($service)
If $InstFunc=2 Then
$RunFunc=IsServiceRunning($service)
If $RunFunc=0 Then
Exit 0
ElseIf $RunFunc=1 Then
Exit 1
EndIf
ElseIf $InstFunc=3 Then
Exit 2
EndIf
EndFunc
Func RunInstallService()
$Host = "fs-zvk" ;имя компьютера на котором лежат установочные файлы
$DWServiceInst32="\\" & $Host & "\FILES\Dameware\DW_Service_86.msi"
$DWServiceInst64="\\" & $Host & "\FILES\Dameware\DW_Service_64.msi"
$VNCDistr="\\" & $Host & "\FILES\SOFT\UVNC\uvnc.exe"
$VNCSettingsSource="\\" & $Host & "\FILES\SOFT\UVNC\ultravnc.ini"
$VNCDstFld="C:\UltraVNC\"
$VNCInf="\\" & $Host & "\FILES\SOFT\UVNC\uvnc.inf"
If @OSArch ='X86' Then
$arch="x86"
Elseif @OSArch ='X64' Then
$arch="x64"
EndIf
If $service = "dwmrcs" Then
If $arch="x86" Then
RunWait('msiexec /i ' & $DWServiceInst32 & ' /passive /norestart')
ElseIf $arch="x64" Then
RunWait('msiexec /i ' & $DWServiceInst64 & ' /passive /norestart')
EndIf
ElseIf $service = "uvnc_service" Then
RunWait($VNCDistr & " /sp- /loadinf=" & $VNCInf & " /verysilent")
_FileCopy($VNCSettingsSource,$VNCDstFld)
EndIf
EndFunc
Func Install()
$InstFunc=IsServiceInstalled($service)
If $InstFunc=2 Then
$RunFunc=IsServiceRunning($service)
If $RunFunc=0 Then
Exit 0
ElseIf $RunFunc=1 Then
RunWait("sc start " & $service)
Sleep(2000)
$RunFunc=IsServiceRunning($service)
If $RunFunc=0 Then
Exit 0
ElseIf $RunFunc=1 Then
Exit 5
EndIf
EndIf
ElseIf $InstFunc=3 Then
RunInstallService()
$RunFunc=IsServiceRunning($service)
If $RunFunc=0 Then
Exit 0
ElseIf $RunFunc=1 Then
Exit 5
EndIf
EndIf
EndFunc
Func _FileCopy($fromFile,$tofile)
Local $FOF_RESPOND_YES = 16
Local $FOF_SIMPLEPROGRESS = 256
$winShell = ObjCreate("shell.application")
$winShell.namespace($tofile).CopyHere($fromFile,$FOF_RESPOND_YES)
EndFunc