Advertisement
AZJIO

Мегафон - подключение

Dec 21st, 2011
555
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
AutoIt 8.21 KB | None | 0 0
  1. #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
  2. #AutoIt3Wrapper_Outfile=FixMegaFon.exe
  3. #AutoIt3Wrapper_Icon=FixMegaFon.ico
  4. #AutoIt3Wrapper_Compression=4
  5. #AutoIt3Wrapper_Res_Comment=-
  6. #AutoIt3Wrapper_Res_Description=FixMegaFon.exe
  7. #AutoIt3Wrapper_Res_Fileversion=0.1.0.0
  8. #AutoIt3Wrapper_Res_FileVersion_AutoIncrement=n
  9. #AutoIt3Wrapper_Res_LegalCopyright=AZJIO
  10. #AutoIt3Wrapper_Res_Language=1049
  11. #AutoIt3Wrapper_Run_Au3check=n
  12. #AutoIt3Wrapper_Res_Field=Version|0.1
  13. #AutoIt3Wrapper_Res_Field=Build|2012.07.02
  14. #AutoIt3Wrapper_Res_Field=Coded by|AZJIO
  15. #AutoIt3Wrapper_Res_Field=Compile date|%longdate% %time%
  16. #AutoIt3Wrapper_Res_Field=AutoIt Version|%AutoItVer%
  17. #AutoIt3Wrapper_Run_Obfuscator=y
  18. #Obfuscator_Parameters=/sf /sv /om /cs=0 /cn=0
  19. #AutoIt3Wrapper_Run_After=del /f /q "%scriptdir%\%scriptfile%_Obfuscated.au3"
  20. #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
  21.  
  22. ; Скрипт автоматического подключения интернет-мегафона.
  23. ; Действия: при вставке брелка в USB запускаем скрипт, который ожидает автоопределения устройств системой, далее подключает и сворачивает в трей. Дополнительно восстанавливает галочку "Oтoбpaжaть coдepжимoe oкнa пpи пepeтacкивaнии", которую мегафоновская программа сбрасывает по непонятной причине.
  24.  
  25. ; AZJIO 04.08.2012
  26.  
  27. Global $sPath = @ProgramFilesDir & '\MegaFon Internet\MegaFon Internet.exe'
  28. Global $hMF_Inet, $title_MF_Inet = "МегаФон Интернет"
  29. ; TraySetIcon('shell32.dll', -149)
  30. If @Compiled Then ; иконка сигнализирующая работу программы
  31.     TraySetIcon('FixMegaFon.exe', 0)
  32. Else
  33.     TraySetIcon('FixMegaFon.ico', 0)
  34. EndIf
  35.  
  36. If ProcessExists('MegaFon Internet.exe') Then
  37.     $hMF_Inet = WinActivate($title_MF_Inet) ; активируем окно
  38.     $hMF_Inet = WinWaitActive($title_MF_Inet, '', 2) ; ждём активации окна
  39.     If $hMF_Inet Then ; если окно активировалось, то подключение
  40.         _Connect1()
  41.         _Connect2()
  42.     Else
  43.         ; если окно не активировалось в течении 2 сек, то предлагаем перезапустить
  44.         If MsgBox(4, 'Сообщение', 'Программа уже запущена и должна быть в трее' & @CRLF & 'Хотите перезапустить программу?') = 6 Then
  45.             If Not WinClose($title_MF_Inet) Then
  46.                 ProcessClose('MegaFon Internet.exe')
  47.                 If Not ProcessWaitClose("MegaFon Internet.exe", 2) Then _Exit()
  48.             EndIf
  49.         Else
  50.             _Exit() ; тут подключить
  51.         EndIf
  52.     EndIf
  53. EndIf
  54.  
  55. ; проверяем 12 раз с паузой в 3 секунды появление нечитаемого USB и CD-ROM-устройства
  56. $iDrivesExists = 0
  57. For $i = 1 To 12
  58.     $iDrivesExists = _DrivesTrue()
  59.     If $iDrivesExists Then ExitLoop
  60.     TrayTip('Поиск устройств', 'Попытка ' & $i & ' (не найдено)', 3, 1)
  61.     If $i = 12 Then _Exit() ; Выход если на 12 попытке цикл закончился без обнаружения устройств
  62.     Sleep(3000)
  63. Next
  64. TrayTip('Поиск устройств', 'Устройства обнаружены', 3, 1)
  65.  
  66. ; Запускаем и подключаем модем Мегафон
  67. Run($sPath)
  68. _Connect1() ; Функция подключает
  69. _SetCheck() ; Восстановление галочки "Oтoбpaжaть coдepжимoe oкнa пpи пepeтacкивaнии", пока мегафон выполняет подключение
  70. _Connect2() ; Функция если требуется выполняет повторное подкл. с 9 попыток и заканчивается выходом из скрипта
  71.  
  72. Func _Connect1()
  73.     $hMF_Inet = WinWait($title_MF_Inet, '', 5) ; ожидаем окно
  74.     If Not $hMF_Inet Then _Exit()
  75.     Sleep(100)
  76.     If ControlGetText($hMF_Inet, '', '[CLASS:Button; INSTANCE:5]') = 'Подключить' Then ; Если текст кнопки =
  77.         ControlClick($hMF_Inet, '', '[CLASS:Button; INSTANCE:5]') ; кликаем её
  78.         TrayTip('Подключение', 'Выполняется...', 3, 1)
  79.     EndIf
  80. EndFunc
  81.  
  82. Func _Connect2()
  83.     ; Ожидаем закрытия окна подключения
  84.     Local $hConnect, $i, $title_Connect = 'Подсказка сетевого подключения'
  85.     For $i = 1 To 9
  86.         $hConnect = WinWait($title_Connect, '', 1)
  87.         If $hConnect Then ; если существует окно подключения
  88.             ; Если текст кнопки =, то кликаем её
  89.             If ControlGetText($hConnect, '', '[CLASS:Button; INSTANCE:1]') = 'Повторный набор' Then ControlClick($hConnect, '', '[CLASS:Button; INSTANCE:1]')
  90.             If $i = 9 Then _Exit() ; выход, если это была 9-ая попытка
  91.             TrayTip('Подключение', 'Попытка ' & $i & ' (не подключено)', 3, 1)
  92.             Sleep(400)
  93.         Else
  94.             ExitLoop
  95.         EndIf
  96.     Next
  97.     ; Если кнопка изменилась на "Отключить", то сворачиваем окно
  98.     For $i = 1 To 5
  99.         If ControlGetText($title_MF_Inet, '', '[CLASS:Button; INSTANCE:5]') = 'Отключить' Then
  100.             WinSetState($title_MF_Inet, '', @SW_MINIMIZE) ; Сворачиваем
  101.             TrayTip('Подключение', 'Готово', 3, 1)
  102.             _Exit()
  103.         EndIf
  104.         Sleep(400)
  105.     Next
  106. EndFunc
  107.  
  108. Func _Exit()
  109.     TraySetIcon('')
  110.     Exit
  111. EndFunc
  112.  
  113. Func _SetCheck()
  114.     Local $hEffects, $hEkran, $title_Effects, $title_Ekran
  115.     $title_Ekran = "Свойства: Экран"
  116.     $title_Effects = "Эффекты"
  117.     Run('rundll32 shell32.dll,Control_RunDLL desk.cpl,,2') ; открываем окно "Свойства: Экран" на вкладке "Оформление"
  118.     $hEkran = WinWait($title_Ekran, '', 5) ; Ожидаем появление окна 5 сек
  119.     If $hEkran Then
  120.         Sleep(100) ; задержки требуются для нарисования окон
  121.         ControlClick($hEkran, '', '[CLASS:Button; INSTANCE:1]') ; кликаем кнопку "Эффекты..."
  122.         $hEffects = WinWait($title_Effects, '', 2) ; Ожидаем появление окна "Эффекты" 2 сек
  123.         If $hEffects Then ; Если дождались окно, то
  124.             Sleep(100)
  125.             ; ControlClick($hEffects, '', '[CLASS:Button; INSTANCE:5]') ; кликаем галочку "Отображать содержимое окна при перетаскивании"
  126.             ControlCommand($hEffects, "", '[CLASS:Button; INSTANCE:5]', "Check") ; устанавливаем галочку "Отображать содержимое окна при перетаскивании"
  127.             ControlClick($hEffects, '', '[CLASS:Button; INSTANCE:7]') ; кликаем ОК в окне "Эффекты"
  128.             ControlClick($hEkran, '', '[CLASS:Button; INSTANCE:3]') ; кликаем ОК в окне"Свойства: Экран"
  129.         Else
  130.             WinWaitClose($hEkran, '', 5) ; если не дождались окно, то закрываем окно "Свойства: Экран"
  131.         EndIf  
  132.     EndIf
  133. EndFunc
  134.  
  135. ; проверка появления/существования подключаемых устройств мегафона
  136. Func _DrivesTrue()
  137.     Local $iDrivesExists = 0, $i, $DrivesArr
  138.     $DrivesArr = DriveGetDrive('REMOVABLE') ; запрашиваем все переносные устройства
  139.     If @error Then Return SetError(1, 0, 0) ; если не найдено
  140.     For $i = 1 To $DrivesArr[0]
  141.         If DriveStatus($DrivesArr[$i]) = 'NOTREADY' Then $iDrivesExists += 1
  142.     Next
  143.     If Not $iDrivesExists Then Return SetError(1, 0, 0) ; если не найден нечитаемое устройство
  144.     $DrivesArr = DriveGetDrive('CDROM') ; запрашиваем все CDROM
  145.     If @error Then Return SetError(1, 0, 0) ; если не найдено
  146.     For $i = 1 To $DrivesArr[0]
  147.         ; Если читаемый CD и на нём найден файл "MegaFon Internet", то возвратить 1
  148.         If DriveStatus($DrivesArr[$i]) = 'READY' And FileExists($DrivesArr[$i] & '\MegaFon Internet') Then Return SetError(0, 0, 1)
  149.     Next
  150. EndFunc
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement