Показать полную графическую версию : [Архив - Часть 1.3] AutoIt скрипты
Creat0R
Рад, что пригодилось. Собирал информацию как говориться с мира по нитке. :)
Вот только мне не нравиться что эти функции цвета переворачивают с RGB на GBR, надо будет потом поправить...
Creat0R
Поправил. :) Теперь только RGB.
Я написал AutoIt скрипт который автоматически закрывает рекламное окно в visicom 2003:
;Отслеживает и закрывает рекламное окно
;скрыть в системной панели индикатор AutoIt
;AutoItSetOption("TrayIconHide", 1)
;Отображать текущую строку сценария с помощью индикатора системной панели в режиме отладки.
AutoItSetOption("TrayIconDebug", 1)
AutoItSetOption("SendKeyDelay", 15)
;Переходим в папку с visicom
;FileChangeDir('%1%')
FileChangeDir('c:\temp\Visicom')
Run('Vcmurbas.exe')
WinWaitActive('','')
ControlClick('','Вход','Button1')
;MsgBox(4096, "", ProcessExists("mmc.exe"))
;включить режим поиска в окнах-потомках
Opt("WinSearchChildren", 1)
While ProcessExists("ntvdm.exe")<>0
;дожидаемся активности окна с рекламой
WinWait('Внимание!','Подробнее...')
WinClose('Внимание!','Подробнее...')
Sleep(200)
WEnd
запускаю %path_cmdutils%\Autoit3.exe Visicom.au3 %visicom_path% (переменные объявлены и заданы верно)
Работает (рекламные окна закрывает), но не отслеживает закрытия visicom и скрипт продолжает зацикливаться.
Прикол в том что vcmurbas.exe запущен через NTVDM и в явном виде его ProcessExists не видет :(
система Win2kSP4en, что посоветуете? Как это можно обойти?
V0van3
vcmurbas.exe запущен через NTVDM и в явном виде его ProcessExists не видет так вроде работает:$pid = Run("Vcmurbas.exe")
While ProcessExists($pid)
Sleep(200)
WEnd
mariolast
30-05-2007, 09:32
Клевая прога для работы с телефонной книгой, картинками, мелодиями и т.п. для целой кучи 357 видов мобил
Скачать http://download.mobiledit.com/mobiledit!/MOBILedit!.exe
Русик http://msilab.net/show.php?rus=1033
Наброски AutoIt скрипта http://forum.oszone.net/showthread.php?p=592697#post592697
:moderator
Данная тема предназначена для общих вопросов по AutoIt. Вопросы по установке приложений при помощи AutoIt следует задавать в соответствии с правилами форума "Автоматическая установка приложений" (http://forum.oszone.net/announcement.php?f=61&announcementid=43)
Вот написал скрипт для установки Adobe Acrobat 7.0.0 Professional но видимо где то проблема с нажатием кнопки, так как вылетает сообщение уверены что хотите отменить установку Adobe Acrobat 7.0.0 Professional, и скрипт авто отвечает нет и установка идет далее. Проверял все кнопки все, вроде указано верно в чем может быть проблема?
#cs
----------------------
Приложение: Adobe Acrobat
На какой(их) версии(ях) тестировалось: 7.0.0 Professional
Автор скрипта: Voler
----------------------
#ce
;предотвращение возможности множественного запуска скрипта
If WinExists(@ScriptName) Then Exit
AutoItWinSetTitle(@ScriptName)
;Отображать текущую строку сценария с помощью индикатора системной панели в режиме отладки.
AutoItSetOption("TrayIconDebug", 1)
; Установка переменных
Global $file='setup.exe', $key='keygen.exe', $AvtCode, $ACStr
Run ( $file )
;Splash
WinWaitActive ( 'Adobe Acrobat 7.0 Professional - Setup' )
ControlClick ( 'Adobe Acrobat 7.0 Professional - Setup', '', 'Button1' )
;Welcome to the Adobe Acrobat 7.0 Professional Setup
WinWaitActive ( 'Adobe Acrobat 7.0 Professional - Setup' )
Sleep ( 500 )
ControlClick ( 'Adobe Acrobat 7.0 Professional - Setup', '', 'Button1' )
;Click Next to view the End User License agreement.
WinWaitActive ( 'Adobe Acrobat 7.0 Professional - Setup' )
ControlClick ( 'Adobe Acrobat 7.0 Professional - Setup', '', 'Button1' )
;End User License agreement.
WinWaitActive ( 'Adobe Acrobat 7.0 Professional - Setup' )
ControlClick ( 'Adobe Acrobat 7.0 Professional - Setup', '', 'Button2' )
;Customer Information.
WinWaitActive ( 'Adobe Acrobat 7.0 Professional - Setup' )
ControlClick ( 'Adobe Acrobat 7.0 Professional - Setup', '', 'Button1' )
;Cache the Installer Files.
WinWaitActive ( 'Adobe Acrobat 7.0 Professional - Setup' )
ControlClick ( 'Adobe Acrobat 7.0 Professional - Setup', '', 'Button1' )
;PDFMaker Installation and Integration Information.
WinWaitActive ( 'Adobe Acrobat 7.0 Professional - Setup' )
ControlClick ( 'Adobe Acrobat 7.0 Professional - Setup', '', 'Button1' )
;Please select a setup type.
WinWaitActive ( 'Adobe Acrobat 7.0 Professional - Setup' )
ControlClick ( 'Adobe Acrobat 7.0 Professional - Setup', '', 'Button5' )
;Destination Folder.
WinWaitActive ( 'Adobe Acrobat 7.0 Professional - Setup' )
ControlClick ( 'Adobe Acrobat 7.0 Professional - Setup', '', 'Button1' )
; рапорт инсталятора о готовности к установки
WinWait ( 'Adobe Acrobat 7.0 Professional','Ready to Install the Program' )
WinWaitActive ( 'Adobe Acrobat 7.0 Professional','Ready to Install the Program' )
ControlClick ( 'Adobe Acrobat 7.0 Professional', 'Ready to Install the Program', 'Button1' )
; активация - начало
WinWait ( 'Adobe Acrobat Installer','Activation Options' )
;это окно иногда появляется, а иногда нет. Закономерность появления не найдена.
If WinExists ( 'Adobe Acrobat Installer', 'Activate Using the Internet' ) Then
WinActivate ( 'Adobe Acrobat Installer', 'Activate Using the Internet' )
WinWaitActive ( 'Adobe Acrobat Installer', 'Activate Using the Internet' )
ControlClick ( 'Adobe Acrobat Installer', 'Activate Using the Internet', 'Button3' )
EndIf
; продолжение активации - выбираем активировать по телефону
WinWaitActive ( 'Adobe Acrobat Installer','Activation Options' )
Sleep ( 500 )
ControlClick ( 'Adobe Acrobat Installer','Activation Options', 'Button2' )
Sleep ( 500 )
ControlClick ( 'Adobe Acrobat Installer','Activation Options', 'Button7' )
exit
volerв чем может быть проблема?проблема очевидна - при появлении окна отрабатывают сразу все 9 ControlClick'ов, т.е. для Button1, Button2, Button5, так как эти окна ничем не отличаются - используйте для идентификации текст окна. Кроме того:
- "предотвращение возможности множественного запуска скрипта" работать не будет, используйте функцию ProcessList();
- если окно может не появиться используйте WinWait() / WinWaitActive() с таймаутом ожидания.
- автоматизацию keygen'а лучше с форума убрать, задавайте вопросы по существу.
Сейчас объясню. У меня есть программа в папке, где такое дерево каталогов.
\
\Files
Мне надо, чтобы открывался txt файл, который лежит в папке \Files
Как мне такое сделать.. (Или как вообще txt открыть...)
проблема очевидна - при появлении окна отрабатывают сразу все 9 ControlClick'ов, т.е. для Button1, Button2, Button5, так как эти окна ничем не отличаются - используйте для идентификации текст окна. Кроме того:
Скажи ты имеешь ввиду вставлять текст в
WinWaitActive ( 'Adobe Acrobat 7.0 Professional - Setup' )
ControlClick ( 'Adobe Acrobat 7.0 Professional - Setup', 'Вот Сюда?', 'Button1' ) И какой текст вводить?
&Next >
&Cancel
< &Back
The Wizard will install Adobe Acrobat 7.0 Professional on your computer. To continue, click Next.
WARNING: This program is protected by copyright law and international treaties.
BmpDlgImage
InstallShield
InstallShield
Welcome to the Adobe Acrobat 7.0 Professional Setup
DenchikK
31-05-2007, 16:08
Не могу понять, как осуществить задуманное.
Идея такая:
Надо в программе заполнять 3 поля: ссылка, логин, пароль.
Список ссылок, логинов и паролей находится в файлах links.txt, logins.txt, pass.txt
Для одной ссылки, пароля и логина я знаю как это делается:
#include <GUIConstants.au3>
If WinExists(@ScriptName) Then Exit
AutoItWinSetTitle(@ScriptName)
AutoItSetOption("TrayIconDebug", 1)
AutoItSetOption("SendKeyDelay", 60)
AutoItSetOption("MouseCoordMode", 0)
Global $file, $line_logins, $line_pass, $line_links
; Чтение Файла С Логинами
$file = FileOpen("logins.txt", 0)
If $file = -1 Then
MsgBox(0, "Error", "Unable to open file.")
Exit
EndIf
$line_logins = FileReadLine($file)
FileClose($file)
; Чтение Файла С Паролями
$file = FileOpen("pass.txt", 0)
If $file = -1 Then
MsgBox(0, "Error", "Unable to open file.")
Exit
EndIf
$line_pass = FileReadLine($file)
FileClose($file)
; Чтение Файла С Линками
$file = FileOpen("links.txt", 0)
If $file = -1 Then
MsgBox(0, "Error", "Unable to open file.")
Exit
EndIf
$line_links = FileReadLine($file)
FileClose($file)
; Запуск программы
Run ('avaload.exe')
; Построение GUI
GUICreate("Автозаполнение", 330, 300)
$checkCN1 = GUICtrlCreateCheckbox ($line_logins, 10, 10, 180, 20)
$checkCN2 = GUICtrlCreateCheckbox ("CHECKBOX 2", 10, 30, 180, 20)
$checkCN3 = GUICtrlCreateCheckbox ("CHECKBOX 3", 10, 50, 180, 20)
$Start = GUICtrlCreateButton("Заполнить", 200, 10, 120, 20)
$Close = GUICtrlCreateButton("Выход", 200, 30, 120, 20)
GUISetState ()
; Основная Работа Скрипта
While 1
$msg = GUIGetMsg()
If $msg = $GUI_EVENT_CLOSE Or $msg = $Close Then
Exit
ElseIf $msg = $Start Then
If GUICtrlRead($checkCN1) = 1 Then
WinActivate ("AvaRemoteLoad")
ControlSetText ( 'AvaRemoteLoad', '', 'Edit1', $line_links )
ControlSetText ( 'AvaRemoteLoad', '', 'Edit2', $line_logins)
ControlSetText ( 'AvaRemoteLoad', '', 'Edit3', $line_pass )
EndIf
If GUICtrlRead($checkCN2) = 1 Then
MsgBox(0,"Установка","Чекбокс 2",1)
EndIf
If GUICtrlRead($checkCN3) = 1 Then
MsgBox(0,"Установка","Чекбокс 3",1)
EndIf
EndIf
WEnd
а вот как переделать это под список - чтоб чекбоксов появлялось столько, сколько записей.
И ещё наверное, либо есть способ чтоб выделялся только один чекбокс, либо надо будет переделать под radiobutton.
Заранее благодарен за любую помощь.
_Flame_
Мне надо, чтобы открывался txt файл, который лежит в папке \Files
Открывался в редакторе по умолчанию? тогда так:
$FilePath = "Files\textfile.txt"
ShellExecute($FilePath)
DenchikK
как переделать это под список - чтоб чекбоксов появлялось столько, сколько записей.
Примерно так - это отдельный набросок для создания чекбоксов в зависимости от числа записей, которые предварительно нужно поместить в массив (см. функцию _FileReadToArray() ) :
;---это в начало файла---
#include <File.au3>
;------------------------
; Построение GUI
GUICreate("Автозаполнение", 330, 300)
Global $Links_Array
_FileReadToArray("links.txt", $Links_Array)
If IsArray($Links_Array) Then
$Top = 10
For $i = 1 To $Links_Array[0]
GUICtrlCreateCheckbox($Links_Array[$i], 10, $Top, 180, 20)
$Top += 20
Next
EndIf
$Start = GUICtrlCreateButton("Заполнить", 200, 10, 120, 20)
$Close = GUICtrlCreateButton("Выход", 200, 30, 120, 20)
GUISetState()
Если записей (каждая запись это отдельная строка в файле) больше чем чекбоксы помещаются в ГУИ, то также как я проделал с переменной $Top, нужно проделать и с левым выравниванием чекбоксов ($Left = 10 и потом прибавлять в цикле, скажем по 80).
DenchikK
01-06-2007, 01:47
Creat0R
Спасибо большое! Построение GUI идет как надо, но вот только теперь я не понимаю, как обрабатывать эти чекбоксы... Не понимаю, как это:
If GUICtrlRead($checkCN1) = 1 Then
WinActivate ("AvaRemoteLoad")
ControlSetText ( 'AvaRemoteLoad', '', 'Edit1', $Links_Array[1] )
ControlSetText ( 'AvaRemoteLoad', '', 'Edit2', $Logins_Array[1])
ControlSetText ( 'AvaRemoteLoad', '', 'Edit3', $Pass_Array[1])
EndIf
заставить работать с построением GUI...
Тупо заделал так, но теряется возможность определять, сколько чекбоксов надо сделать для содержимого файла логов:
#include <GUIConstants.au3>
#include <File.au3>
If WinExists(@ScriptName) Then Exit
AutoItWinSetTitle(@ScriptName)
AutoItSetOption("TrayIconDebug", 1)
AutoItSetOption("SendKeyDelay", 60)
AutoItSetOption("MouseCoordMode", 0)
; Запуск программы
Run ('avaload.exe')
; Построение GUI
GUICreate("Автозаполнение", 330, 300)
Global $Links_Array, $Logins_Array, $Pass_Array
_FileReadToArray("logins.txt", $Logins_Array)
_FileReadToArray("pass.txt", $Pass_Array)
_FileReadToArray("links.txt", $Links_Array)
$checkCN1 = GUICtrlCreateCheckbox ($Logins_Array[1], 10, 10, 180, 20)
$checkCN2 = GUICtrlCreateCheckbox ($Logins_Array[2], 10, 30, 180, 20)
$checkCN3 = GUICtrlCreateCheckbox ($Logins_Array[3], 10, 50, 180, 20)
$checkCN4 = GUICtrlCreateCheckbox ($Logins_Array[4], 10, 70, 180, 20)
$checkCN5 = GUICtrlCreateCheckbox ($Logins_Array[5], 10, 90, 180, 20)
$checkCN6 = GUICtrlCreateCheckbox ($Logins_Array[6], 10, 110, 180, 20)
$checkCN7 = GUICtrlCreateCheckbox ($Logins_Array[7], 10, 130, 180, 20)
$checkCN8 = GUICtrlCreateCheckbox ($Logins_Array[8], 10, 150, 180, 20)
$checkCN9 = GUICtrlCreateCheckbox ($Logins_Array[9], 10, 170, 180, 20)
$checkCN10 = GUICtrlCreateCheckbox ($Logins_Array[9], 10, 190, 180, 20)
$Start = GUICtrlCreateButton("Заполнить", 200, 10, 120, 20)
$Close = GUICtrlCreateButton("Выход", 200, 30, 120, 20)
GUISetState ()
; Основная Работа Скрипта
While 1
$msg = GUIGetMsg()
If $msg = $GUI_EVENT_CLOSE Or $msg = $Close Then
Exit
ElseIf $msg = $Start Then
If GUICtrlRead($checkCN1) = 1 Then
WinActivate ("AvaRemoteLoad")
ControlSetText ( 'AvaRemoteLoad', '', 'Edit1', $Links_Array[1])
ControlSetText ( 'AvaRemoteLoad', '', 'Edit2', $Logins_Array[1])
ControlSetText ( 'AvaRemoteLoad', '', 'Edit3', $Pass_Array[1])
EndIf
If GUICtrlRead($checkCN2) = 1 Then
WinActivate ("AvaRemoteLoad")
ControlSetText ( 'AvaRemoteLoad', '', 'Edit1', $Links_Array[2])
ControlSetText ( 'AvaRemoteLoad', '', 'Edit2', $Logins_Array[2])
ControlSetText ( 'AvaRemoteLoad', '', 'Edit3', $Pass_Array[2])
EndIf
If GUICtrlRead($checkCN3) = 1 Then
WinActivate ("AvaRemoteLoad")
ControlSetText ( 'AvaRemoteLoad', '', 'Edit1', $Links_Array[3])
ControlSetText ( 'AvaRemoteLoad', '', 'Edit2', $Logins_Array[3])
ControlSetText ( 'AvaRemoteLoad', '', 'Edit3', $Pass_Array[3])
EndIf
If GUICtrlRead($checkCN4) = 1 Then
WinActivate ("AvaRemoteLoad")
ControlSetText ( 'AvaRemoteLoad', '', 'Edit1', $Links_Array[4])
ControlSetText ( 'AvaRemoteLoad', '', 'Edit2', $Logins_Array[4])
ControlSetText ( 'AvaRemoteLoad', '', 'Edit3', $Pass_Array[4])
EndIf
If GUICtrlRead($checkCN5) = 1 Then
WinActivate ("AvaRemoteLoad")
ControlSetText ( 'AvaRemoteLoad', '', 'Edit1', $Links_Array[5])
ControlSetText ( 'AvaRemoteLoad', '', 'Edit2', $Logins_Array[5])
ControlSetText ( 'AvaRemoteLoad', '', 'Edit3', $Pass_Array[5])
EndIf
If GUICtrlRead($checkCN6) = 1 Then
WinActivate ("AvaRemoteLoad")
ControlSetText ( 'AvaRemoteLoad', '', 'Edit1', $Links_Array[5])
ControlSetText ( 'AvaRemoteLoad', '', 'Edit2', $Logins_Array[5])
ControlSetText ( 'AvaRemoteLoad', '', 'Edit3', $Pass_Array[5])
EndIf
If GUICtrlRead($checkCN7) = 1 Then
WinActivate ("AvaRemoteLoad")
ControlSetText ( 'AvaRemoteLoad', '', 'Edit1', $Links_Array[7])
ControlSetText ( 'AvaRemoteLoad', '', 'Edit2', $Logins_Array[7])
ControlSetText ( 'AvaRemoteLoad', '', 'Edit3', $Pass_Array[7])
EndIf
If GUICtrlRead($checkCN8) = 1 Then
WinActivate ("AvaRemoteLoad")
ControlSetText ( 'AvaRemoteLoad', '', 'Edit1', $Links_Array[8])
ControlSetText ( 'AvaRemoteLoad', '', 'Edit2', $Logins_Array[8])
ControlSetText ( 'AvaRemoteLoad', '', 'Edit3', $Pass_Array[8])
EndIf
If GUICtrlRead($checkCN9) = 1 Then
WinActivate ("AvaRemoteLoad")
ControlSetText ( 'AvaRemoteLoad', '', 'Edit1', $Links_Array[9])
ControlSetText ( 'AvaRemoteLoad', '', 'Edit2', $Logins_Array[9])
ControlSetText ( 'AvaRemoteLoad', '', 'Edit3', $Pass_Array[9])
EndIf
If GUICtrlRead($checkCN10) = 1 Then
WinActivate ("AvaRemoteLoad")
ControlSetText ( 'AvaRemoteLoad', '', 'Edit1', $Links_Array[10])
ControlSetText ( 'AvaRemoteLoad', '', 'Edit2', $Logins_Array[10])
ControlSetText ( 'AvaRemoteLoad', '', 'Edit3', $Pass_Array[10])
EndIf
EndIf
WEnd
Попробовал по изощряться для компактности с $i - не вышло...
DenchikK
как обрабатывать эти чекбоксы
По идее можно создавать динамический массив который будет содержать в себе все управляющие идентификаторы (ControlID) от созданных чекбоксов, и отслеживать каждый раз нужный проверяя элементы массива..
Лучше (надёжнее) проверять все чекбоксы, а нужный текст брать из самого названия чекбокса, ведь каждый зажатый чекбокс (который мы и будем проверять), имеет то название, которое и требуется для записи...
Я бы если честно предложил использовать события (Events), правда придётся немного переделать структуру всего GUI (не сильно :) ), для этого в начале скрипта нужно установить опции для срабатывания событии - Opt("GuiOnEventMode", 1), и потом всем (нужным для обработки) контролам присваивать функцию которая будет срабатывать на событие, так в дальнейшем легче обрабатывать элементы (имхо):
#include <GUIConstants.au3>
#include <File.au3>
If WinExists(@ScriptName) Then Exit
AutoItWinSetTitle(@ScriptName)
Opt("TrayIconDebug", 1)
Opt("SendKeyDelay", 60)
Opt("MouseCoordMode", 0)
Opt("GuiOnEventMode", 1)
Global $Array_logins, $Array_pass, $Array_links, $CheckBoxIDArray[1]
; Чтение Файла С Логинами
_FileReadToArray("logins.txt", $Array_logins)
If @error Then
MsgBox(0, "Error", "Unable to open file.")
Exit
EndIf
; Чтение Файла С Паролями
_FileReadToArray("pass.txt", $Array_pass)
If @error Then
MsgBox(0, "Error", "Unable to open file.")
Exit
EndIf
; Чтение Файла С Линками
_FileReadToArray("links.txt", $Array_links)
If @error Then
MsgBox(0, "Error", "Unable to open file.")
Exit
EndIf
; Запуск программы
Run ('avaload.exe')
; Построение GUI
GUICreate("Автозаполнение", 330, 300)
GUISetOnEvent(-3, "Quit")
$Top = 10
$Left = 10
;Чекбоксы для логинов
If IsArray($Array_logins) Then
For $i = 1 To $Array_logins[0]
ReDim $CheckBoxIDArray[UBound($CheckBoxIDArray)+1]
$CheckBoxIDArray[UBound($CheckBoxIDArray)-1] = GUICtrlCreateCheckbox($Array_logins[$i], $Left, $Top, 180, 20)
$Top += 20
If $Top >= 200 Then
$Top = 10
$Left += 90
EndIf
Next
EndIf
;Чекбоксы для паролей
If IsArray($Array_pass) Then
For $i = 1 To $Array_pass[0]
ReDim $CheckBoxIDArray[UBound($CheckBoxIDArray)+1]
$CheckBoxIDArray[UBound($CheckBoxIDArray)-1] = GUICtrlCreateCheckbox($Array_pass[$i], $Left, $Top, 180, 20)
$Top += 20
If $Top >= 160 Then
$Top = 10
$Left += 90
EndIf
Next
EndIf
;Чекбоксы для линков
If IsArray($Array_links) Then
For $i = 1 To $Array_links[0]
ReDim $CheckBoxIDArray[UBound($CheckBoxIDArray)+1]
$CheckBoxIDArray[UBound($CheckBoxIDArray)-1] = GUICtrlCreateCheckbox($Array_links[$i], $Left, $Top, 180, 20)
$Top += 20
If $Top >= 160 Then
$Top = 10
$Left += 90
EndIf
Next
EndIf
$Start = GUICtrlCreateButton("Заполнить", 200, 10, 120, 20)
GUICtrlSetOnEvent($Start, "Start")
$Close = GUICtrlCreateButton("Выход", 200, 30, 120, 20)
GUICtrlSetOnEvent($Close, "Quit")
GUISetState()
While 1
Sleep(10)
WEnd
; Основная Работа Скрипта - функция для обработки чекбоксов
Func Start()
For $i = 1 To UBound($CheckBoxIDArray)-1
If GUICtrlRead($CheckBoxIDArray[$i]) = 1 Then
WinActivate("AvaRemoteLoad")
$CurrentText = GUICtrlRead($CheckBoxIDArray[$i], 1)
ControlSetText('AvaRemoteLoad', '', 'Edit1', $CurrentText)
ControlSetText('AvaRemoteLoad', '', 'Edit2', $CurrentText)
ControlSetText('AvaRemoteLoad', '', 'Edit3', $CurrentText)
EndIf
Next
EndFunc
Func Quit()
Exit
EndFunc
P.S
Кстати, (кажется в последних версиях AutoIt) не обязательно активировать окно для ControlSetText() ;).
DenchikK
01-06-2007, 04:31
Creat0R
Ещё раз огромное спасибо!
Но я что то пока так и не смог разобраться, как же всё это работает...
Эти строки я убрал, так они не нужны и мешают (идея какая - если выбран 3 логин, то выбираются вместе с ним 3 пасс и 3 линк):
;Чекбоксы для паролей
If IsArray($Array_pass) Then
For $i = 1 To $Array_pass[0]
ReDim $CheckBoxIDArray[UBound($CheckBoxIDArray)+1]
$CheckBoxIDArray[UBound($CheckBoxIDArray)-1] = GUICtrlCreateCheckbox($Array_pass[$i], $Left, $Top, 180, 20)
$Top += 20
If $Top >= 160 Then
$Top = 10
$Left += 90
EndIf
Next
EndIf
;Чекбоксы для линков
If IsArray($Array_links) Then
For $i = 1 To $Array_links[0]
ReDim $CheckBoxIDArray[UBound($CheckBoxIDArray)+1]
$CheckBoxIDArray[UBound($CheckBoxIDArray)-1] = GUICtrlCreateCheckbox($Array_links[$i], $Left, $Top, 180, 20)
$Top += 20
If $Top >= 160 Then
$Top = 10
$Left += 90
EndIf
Next
EndIf
и видать из за этого результат этого один и тот же для всех полей:
; Основная Работа Скрипта - функция для обработки чекбоксов
Func Start()
For $i = 1 To UBound($CheckBoxIDArray)-1
If GUICtrlRead($CheckBoxIDArray[$i]) = 1 Then
WinActivate("AvaRemoteLoad")
$CurrentText = GUICtrlRead($CheckBoxIDArray[$i], 1)
ControlSetText('AvaRemoteLoad', '', 'Edit1', $CurrentText)
ControlSetText('AvaRemoteLoad', '', 'Edit2', $CurrentText)
ControlSetText('AvaRemoteLoad', '', 'Edit3', $CurrentText)
EndIf
Next
EndFunc
То бишь у меня получается в поля Линк, Логин, Пароль - пихается Логин... Сижу, пытаюсь понять, как, не выходит...
И скорее всего придётся отказаться от чекбоксов в пользу радиобуттонов, но структура case мне пока не даётся...
volerWinWait ( 'Adobe Acrobat 7.0 Professional - Setup', 'Сюда вставить тект окна, отличающий его от остальных')
ControlClick ( 'Adobe Acrobat 7.0 Professional - Setup', 'Сюда тот же текст, что и в предыдущей функции', 'Button1' )Текст окна можно посмотреть в штатной "AutoIt Window Info".
DenchikK
идея какая - если выбран 3 логин, то выбираются вместе с ним 3 пасс и 3 линк
Я если честно теперь ещё больше запутался в отношении самой идеи...
Если можешь, поясни пошагово (не программно, а как бы со стороны юзера) - Что должно произойти, какие чекбоксы будут созданы (их структура и цель назначения), что должно происходить при зажатом чекбоксе (после нажатия кнопки Start) и т.д.
А я попробую построить соответственно гуи и описать процесс... должно быть не сложно, но цель немного смутновата - когда есть чётко поставленная цель, остальное это время, и усидчивость! (+ немного знании ;)).
В одной папке находятся скрипт .au3 и .exe исходного приложения. При запуске скрипта всё устанавливается правильно, до самого конца.
Через контекстное меню компилирую. При этом скомпилированный .exe "съедает" исходный .exe и имеет иконку такую же, как и скрипт. При запуске скомпилированного .exe ничего не происходит.
AutoIt версия 3.2.4.9.
Что делаю не так?
ChVLскомпилированный .exe "съедает" исходный .exe и имеет иконку такую же, как и скрипт.так ты выбери для скрипта другое имя, к примеру: Setup.exe - приложение, Setup_AU.au3 - скрипт, тогда никакого наложения имен при компиляции не будет
amel27
выбери для скрипта другое имя
Действительно, всё работает! Спасибо!
Странно, что нигде ни в одном мануале о необходимости переименования скрипта нет ни слова. Это же не очевидно. Ну, съедает... А может так и надо?
уважаемый amel27
к сожалению в данном случае не всё так просто. видимо вы не проверяли.
я добавил сразу после запуска Visicom
MsgBox(4096, "otladka", $pid) и оказалось что Visicom.exe имеет Pid=0 т.е. не отлавливает
т.к. Visicom запускается как дочерний процесс NTVDM.exe, последний продолжает оставаться в памяти при закрытии Visiciom то PID NTVDM'а как условие не годится.
В случае например с Notepad.exe или ещё с каким-нибуть другим приложением, которое висит в памяти как самостоятельный процесс проблем нет.
Естессно ваш код более правильный т.к. позволяет отловить именно тот процесс который запустил скрипт (если есть другой процесс с таким же именем), но в данном случае не в этом проблема.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.