Показать полную графическую версию : [архив - Часть 2] AutoIt скрипты
Maza Faka
24-07-2007, 19:48
DenchikK
Может так:
Case $Proxy
For $i = 1 To UBound($Proxy_Array)-1
ControlSend ('Programs', '', 'Edit4', $proxy_Array[$i] & @CR)
Next
amel27
используй флаг $BIF_NONEWFOLDERBUTTON = 0x200
Спасибо.
DenchikK
чтоб по нажатию клавиши, в поле вписывалась бы первая строчка текстового файла, повторное нажатие - 2 строчка
Имхо, нужно установить счётчик кликании...
#include <GuiConstants.au3>
$Gui = GuiCreate("Programs")
$Edit = GUICtrlCreateInput("", 20, 60)
$Button = GUICtrlCreateButton("Заполнить", 20, 350)
$Clicks = 0
$File = "C:\File.txt"
GUISetState()
While 1
$Msg = GUIGetMsg()
Switch $Msg
Case -3
Exit
Case $Button
$Clicks += 1
ControlSetText('Programs', '', $Edit, FileReadLine($File, $Clicks))
EndSwitch
WEnd
Maza Faka
Как отключить монитор используя WinApi? >>>
Посмотрите функцию MonitorToggle() (http://www.autoit.de/thread.php?goto=nextoldest&threadid=1825&sid=034c014ed5da3ec0f09e2ade040fe2d8) от greenmachine.
Maza Faka
Как отключить монитор используя WinApi?
Немного изменённый пример с оф. форума:
#NoTrayIcon
Opt("TrayMenuMode", 1)
Opt("WinTitleMatchMode", 4)
HotKeySet("{F11}", "Monitor_Off")
HotKeySet("{F10}", "Monitor_On")
HotKeySet("{Esc}", "Quit")
While 1
Sleep(100)
WEnd
Func Quit()
Monitor_On()
Exit
EndFunc
Func Monitor_On()
Local $hwnd = WinGetHandle('classname=Progman')
DllCall('user32.dll', 'int', 'SendMessage', 'hwnd', $hwnd, 'int', 274, 'int', 61808, 'int', -1)
EndFunc
Func Monitor_Off()
Local $hwnd = WinGetHandle('classname=Progman')
Sleep(500)
DllCall('user32.dll', 'int', 'SendMessage', 'hwnd', $hwnd, 'int', 274, 'int', 61808, 'int', 2)
EndFunc
Есть такая задача:
Нужно отключить полностью интернет, и подключить через несколько секунд заного..
Пробовал Rasdial, он только отключает, подключать не хочет... хотелось как нибудь добиться этого надёжным путём, т.е чтобы не зависило от типа/имени/настроек подключения.
P.S
Более полу часа провёл в поисках решения на оф. форуме и естествеено в этой ветке, но увы не нашёл :(.
Maza Faka
25-07-2007, 11:47
Creat0R
Спасибо, а где можно найти подробное описание этой функции? А то в справке очень кратко. В частности не понятны числа "274" и "61808", что они означают?
Maza Faka
то они означают?
Эх, чтоб я так знал :biggrin: - Это что то вроде адресов (параемтры) для вызова функции в Dll'ке.
Maza Faka не понятны числа "274" и "61808", что они означают? >>>
WM_SysCommand = 0x0112
WM_SysCommand - Уведомляет окно о том что выбран именно системный элемент меню, обычно эта команда высылается окну если пользователь щёлкает кнопку свёртывания, развёртывания или закрытия, на панели окна справа.
Что такое SC_MonitorPower = 0xF170 я к сожалению не знаю... самому интересно...
что они означают?
http://msdn2.microsoft.com/en-us/library/ms646360.aspx
Creat0R Нужно отключить полностью интернет, и подключить через несколько секунд заного..к примеру, временно выставить настройки на несуществующий прокси
Я немного изменил функцию от greenmachine.
MonitorState(2) ; выключить
Sleep(20000)
MonitorState(-1) ; включить
;~ $mode:
;~ -1 - переводит монитор в нормальный, рабочий режим;
;~ 0 - переводит монитор в режим легкого засыпания
;~ 1 - переводит монитор в спящий режим
;~ 2 - монитор выключается.
Func MonitorState($mode)
$Old_Opt = Opt("WinTitleMatchMode", 4)
Local Const $WM_SYSCommand = 0x112
Local Const $SC_MonitorPower = 0xF170
Local $HWND = WinGetHandle("classname=Progman")
DllCall("user32.dll", "int", "SendMessage", "hwnd", $HWND, "int", $WM_SYSCommand, _
"int", $SC_MonitorPower, "int", $mode)
Opt("WinTitleMatchMode", $Old_Opt)
EndFunc
P.S. Некоторые режимы($mode), поддерживаются не всеми мониторами.
Например у меня не работает режим легкого засыпания($mode=0).
Creat0R
Нужно отключить полностью интернет, и подключить через несколько секунд заного..
В любом файерволле есть опция "Заблокировать интернет".
ChVL
В любом файерволле есть опция "Заблокировать интернет".
У меня нет файрвола (не считая виндовский), и возможно у многих моих друзей тоже его нет, и как это связано с переподключением? и как это связано с AutoIT?
Мне нужно программно переподключиться ;)
Спасибо за попытку помочь :)
Я даже на оф. форум спрашивал, неужели это так сложно? мне казалось что это будет простое решение, но видимо в реале всё совсем иначе :(
amel27
временно выставить настройки на несуществующий прокси
Упс, как я этого не заметил... а подробнее можно плиз? как можно скриптом выставить настройки прокси?
И как это поможет пересоеденить сеть?
Теперь понятно, что Вам надо перезапуск соединения. Конечно, отключение/подключение интернет с помощью файерволла соединение не затрагивает.
Тем не менее перезапуск в каком месте? Чего? Сетевой карты? Модема? VPN? Просто виндусового апплета Сетевые подключения? IMHO, в одной программе все варианты подключений (добавить сюда ещё спутник, ускорители, всякие прокси) вряд ли удастся учесть.
ChVL
перезапуск в каком месте? Чего? Сетевой карты? Модема? VPN? Просто виндусового апплета Сетевые подключения?
Обычное подключение через модем/роутер - какие порты используется не должно играть особой роли, я хочу вызвать тоже действие, что происходит при вызое пункта Отключить/Подключить из контекстного меню умолчального соединения (из папки “Сетевые подключения”).
в одной программе все варианты подключений (добавить сюда ещё спутник, ускорители, всякие прокси) вряд ли удастся учесть
Тогда нет смысла вообще программировать ;)
Я понимаю что AutoIt немного для других целей назначался, но всё же в нём поддерживаются и COM-обьекты, и вызов Dll, и ещё многое другое, не думаю что это не реализуемо, на аутоите реализовывались(ются) вещи и покруче :) .
Creat0R
Может посмотреть команды rundll32? Там что-то есть среди Network.
Creat0R
правка прокси это скорей "запрет на использование", чем переинициализация физического подключения, которое действительно зависит от типа подключения - для диалапа и VPN у меня RasDial и отключает и подключает.
ChVL
Может посмотреть команды rundll32?
Да вот есть у меня ссылочка (http://ivfido.h1.ru/command.html), но что-то она не работает уже :(
amel27
RasDial и отключает и подключает
Для отключения я знаю срабатывает Rasdial /Disconnect, а как обратно подключать?
У меня подключение через модем (VPN - Минипорт WAN (PPTP)).
Creat0R а как обратно подключать?у меня при сохраненных параметрах соединения срабатывает Rasdial <имя_соединения>
Кстати еще вариант - поместить ярлык соединения на рабочий стол, а дальше через контекстное меню. :)
amel27
срабатывает Rasdial <имя_соединения>
У меня нет :( - даже из батника пробую...
@echo off
rasdial /disconnect
ping -n 3 localhost > nul
rasdial 012
pause
012 это имя подключения (судя по имени самого значка в "Сетевые подключения") - но пишет ошибку:
Ошибка службы удаленного доступа 691 - Доступ запрещен, поскольку такие имя
пользователя или пароль недопустимы в этом домене.
поместить ярлык соединения на рабочий стол, а дальше через контекстное меню
Эх, другого выхода и нет, я так до сих пор и делаю, правда не ярлыком, а прямым (точнее кривым) доступом в "Сетевые подключения":
#include <GuiConstants.au3>
Opt("RunErrorsFatal", 0)
Opt("WinTitleMatchMode", 4)
Opt("TrayMenuMode", 1)
TraySetIcon('shell32.dll', 14)
$NetwConnectTitle = IniRead(@ScriptDir & "\ReConnector.ini", "Config", "Network Connections Folder Title", "")
If $NetwConnectTitle = "" Then $NetwConnectTitle = "Network Connections"
BlockInput(1)
ConnectWinShow()
If Not WinExists($NetwConnectTitle) Then Run(@ComSpec & " /c ncpa.cpl", "", @SW_HIDE)
;ShellExecute("::{7007ACC7-3202-11D1-AAD2-00805FC1270E}")
WinWait($NetwConnectTitle, "", 5)
WinActivate($NetwConnectTitle)
WinWaitActive($NetwConnectTitle, "", 3)
If Not WinExists($NetwConnectTitle) Then
BlockInput(0)
Exit
EndIf
Send("{Down}")
Send("{Up}")
Sleep(100)
Send("^+{F10}")
Send("{Down}")
Send("{Enter}")
WinSetState($NetwConnectTitle, "", @SW_DISABLE)
WinSetState($NetwConnectTitle, "", @SW_MINIMIZE)
Sleep(5000)
WinSetState($NetwConnectTitle, "", @SW_RESTORE)
WinSetState($NetwConnectTitle, "", @SW_ENABLE)
WinActivate($NetwConnectTitle)
WinWaitActive($NetwConnectTitle, "", 3)
Send("^+{F10}")
Send("{Down}")
Send("{Enter}")
If WinExists($NetwConnectTitle) Then WinClose($NetwConnectTitle)
BlockInput(0)
Func ConnectWinShow()
Local $ConnectGui = GUICreate("ReConnectProc", 300, 110, 0, 0, $WS_POPUP+$WS_BORDER, $WS_EX_TOOLWINDOW+$WS_EX_TOPMOST)
GUICtrlCreateIcon('shell32.dll', 14, 130, 10, 36, 36)
GUICtrlCreateLabel("Пожалуйста подождите, переподключаюсь...", 0, 60, 300, 30, $SS_CENTER)
GUICtrlSetFont(-1, 10, 600, 0, "Tahoma")
GUISetState(@SW_SHOW, $ConnectGui)
EndFunc
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.