Ru-Board.club
← Вернуться в раздел «Программы»

» AutoIT

Автор: Mister_Che
Дата сообщения: 21.04.2008 07:53
Как сделать чтобы вводимый текст менялся так: 1, 2, 3 и т. п.?
Автор: ViSiToR
Дата сообщения: 21.04.2008 08:10
Mister_Che 08:53 21-04-2008
Цитата:
чтобы вводимый текст менялся так

Вводимы куда? вообще подобное через циклы делается:


Код: For $i = 1 To 10
$sTextToSend = $i & ", "

If $i = 10 Then $sTextToSend = $i

Send($sTextToSend)
Next
Автор: XpycTMD
Дата сообщения: 21.04.2008 08:21
Всем Привет

В сетке есть несколько компов которые должные отсыласть запрос серверу на выполнение определеных комманд. Примеры скриптов Клиент Сервер на офф. форумуе нашол. А как сделать так чтобы Клиент отпралял комманду Серверу, а сервер в свое время в зависимость от команду выполнял соответствующую фукцию (в функции будет генерироватся фаил *.pdf но с разными времмеными рамками) и после того как создатся фаил возвращал клиенту название файла.
Автор: Mister_Che
Дата сообщения: 21.04.2008 09:31
ViSiToR
Выходит вот это сейчас: "1? 2? 3? 4? 5? 6? 7? 8? 9? 10", набирается сразу.
Нужно вот что - кликаешь в форму хтмл страницы, набираешь "1", затем перемещение мышки, клики, нажатия клавиши, затем опять подносишь курсор к форме, кликаешь (чтоб написать что-нибудь) и нужно, чтоб набралось "2" и т. п.

Добавлено:
Как зациклить любой код?

Добавлено:
А как сделать чтобы печатались фразы из какого-нибудь массива?
Автор: Maza Faka
Дата сообщения: 21.04.2008 10:09

Цитата:
Как зациклить любой код?

Смотри в справке: While Wend; Do Until


Цитата:
А как сделать чтобы печатались фразы из какого-нибудь массива?


Код: Dim $aWord[4] = [3, "Hello", "World", "Good"]

For $i = 1 To $aWord[0]
MsgBox(0, "Msg", $aWord[$i])
Next
Автор: Mister_Che
Дата сообщения: 21.04.2008 11:09
Maza Faka, не получилось засунуть в свой код, вот в этот:

MouseClick("left", 913, 431, 1)
Send ("{HOME}")
MouseClick("left", 376, 598, 1)
Send("#my script")
MouseClick("left", 354, 653, 1)
Send("#answer")
MouseClick("left", 644, 596, 1)
Sleep(1000 * 60)

Нужно, чтобы вместо Send("#answer") появлялись как раз слова из массива или цифры по порядку.

Добавлено:
И чтоб как последнее слово или цифра напечатались, то все заново бы было или вообще в рандомном порядке.
Автор: Maza Faka
Дата сообщения: 21.04.2008 15:32
Mister_Che

Цитата:
Нужно, чтобы вместо Send("#answer") появлялись как раз слова из массива или цифры по порядку.

А в чём проблема? Вставляй их в цикле:

Код: Dim $aWord[5] = [4, "Hello", "World", "Good", "Morning"]

Run("notepad.exe")
WinWait("[Class:Notepad]")

While 1
For $i = 1 To $aWord[0]
ControlSend("[Class:Notepad]", "", "Edit1", $aWord[$i])
ControlSend("[Class:Notepad]", "", "Edit1", "{Enter}")
Sleep(50)
Next
WEnd
Автор: Mister_Che
Дата сообщения: 21.04.2008 17:52

Цитата:
while 1
MouseClick("left", 120, 123, 1)
MouseClick("left", 913, 431, 1)
Send ("{HOME}")
MouseClick("left", 376, 598, 1)
Send("#my script")
MouseClick("left", 736, 637, 1)

Dim $aWord[5] = [4, "Hello", "World", "Good", "Morning"]
For $i = 1 To $aWord[0]
Send($aWord[$i])

MouseClick("left", 644, 596, 1)
MouseClick("left", 295, 120, 1)

Next
Sleep(1000 * 120)
WEnd


Нужно, чтоб написался Хелло, сделалось 2 маусклика и на две минуты затих, чтоб затем следующее слово ввел (с повторением до этого вышестоящих маускликов). Не получается, куда бы я Некст ни совал.


Тоже и с цифирным вариантом
Цитата:
For $i = 1 To 3
$sTextToSend = $i
If $i = 3 Then $sTextToSend = $i
Send($sTextToSend)
Next


Добавлено:
Он или вводит сразу все цифры/буквы или делает бессмысленные движения мышью.
Автор: SysLam
Дата сообщения: 22.04.2008 04:55
XpycTMD

Цитата:
Примеры скриптов Клиент Сервер на офф. форумуе нашол. А как сделать так чтобы Клиент отпралял комманду Серверу
а в примерах разве этого нет?.. реализация зависит от выбранных протоколов
Автор: ynbIpb
Дата сообщения: 22.04.2008 07:34
Mister_Che
заработок на кликах и запонениях всяких форм?
есть же специальные программы типа робоформ.
покажи свою форму на которой ты тренируешся.
з.ы. у автоита есть функции специальные для работы с окном IE, в них покопайся может чё дельное найдёш.
Автор: Mister_Che
Дата сообщения: 22.04.2008 08:40
ynbIpb, нет.


Кто-нибудь даст нормальный совет? Нужно чтобы были клики, слово (цифра), клики, пауза. Клики, следующее слово (следующая цифра), клики, пауза.

В моем коде или сразу все слова или два последних клика повторяются несколько раз.

Добавлено:
Про пример для Упыря, пример - любая хтмл страница с формой.

Добавлено:
Он в лучшем случае пишет одно слово делает два клика, но затем опять делает эти же 2 клика несколько раз вместо того, чтобы заснуть на две минуты и начать сначала.
Автор: ynbIpb
Дата сообщения: 22.04.2008 10:23
Mister_Che
Вот приблизительно как я это вижу:

Код: ;защита от запуска двух копий
If WinExists(@ScriptName) Then Exit
AutoItWinSetTitle(@ScriptName)
$MsgBox1 = MsgBox(68, "Автоклик", "Сейчас начнётся автоматическая работа в окне броузера. Продолжить?")
If $MsgBox1 = 7 Then Exit ;если ответ нет, то выходим из скрипта
WinWaitActive("Яндекс - Opera","Яндекс", 30)
MouseClick( "left", 341 ,455,2)
Sleep(1000)
Send("0")
Sleep(1000)
MouseClick( "left", 893 ,451,1)
Sleep(8000)
For $i = 1 To 10;цикл, пока не достигнет 10
MouseClick( "left", 315 ,191,2)
Sleep(1000)
Send($i)
Sleep(1000)
MouseClick( "left", 957 ,191,1)
Sleep(8000)
Next
MsgBox(0, "Автоклик", "Автоклик окончен")
Автор: Mister_Che
Дата сообщения: 22.04.2008 10:55
Ну, я это все стараюсь переделывать...

Это разве настолько сложная задача, что нужно использовать Яндексы, мессадж боксы?

Проще говоря, нужно сосчитать до трех на этой странице, используя клики (и зациклить это дело) - http://forum.ru-board.com/topic.cgi?forum=2&bm=1&topic=2904&glp

То есть, открываем вкладку с той страницей средней кнопкой мыши, выделена эта.

Вот, что мне нужно (задача для скрипта):
Открыть мышью вторую вкладку
Нажать END чтоб страница переместилась до формы
Кликнуть по форме чтоб можно было записать
Ввести "1" (или первое слово в массиве)
Нажать мышкой Отправить
Нажать мышью на первой вкладке
Пауза в две минуты
После нее все должно повториться, но должно ввестись второе число (второе слово в массиве).
Автор: gregaz
Дата сообщения: 23.04.2008 08:57
Как получить ID кликнутого элемента TreeView ?
Через WM_NOTIFY не смог получить
Автор: XpycTMD
Дата сообщения: 23.04.2008 09:53
SysLam


Цитата:
а в примерах разве этого нет?.. реализация зависит от выбранных протоколов

Уже разобрался. Изначально использовал скрипт чата, а щас поискав еще раз на офф форуме нашол Remote Server BETA Он мне подходит, только для отсылки комманд сереру, но он не возвращает название файла который был сгенерирован, хотя есть идея как можно это сделать
Автор: Maza Faka
Дата сообщения: 23.04.2008 11:18
gregaz

Цитата:
Как получить ID кликнутого элемента TreeView ?

Можно так:

Код: #include <GuiConstants.au3>

Opt("GuiOnEventMode", 1)

$hGUI = GUICreate("Test GUI", 300, 200)
GUISetOnEvent($GUI_EVENT_CLOSE, "Quit")

$hTreeView = GUICtrlCreateTreeView(10, 10, 280, 180, _
BitOR($TVS_EDITLABELS, $TVS_INFOTIP, $TVS_HASLINES, $TVS_LINESATROOT, $TVS_HASBUTTONS), $WS_EX_CLIENTEDGE)

For $i = 1 To 5
$hItem = GUICtrlCreateTreeViewItem("Item" & $i, $hTreeView)
GUICtrlSetOnEvent(-1, "_GetId")
For $j = 1 To 5
GUICtrlCreateTreeViewItem("SubItem" & $j, $hItem)
GUICtrlSetOnEvent(-1, "_GetId")
Next
Next


GUISetState()

While 1
Sleep(100)
WEnd

Func
Quit()
Exit
EndFunc

Func
_GetId()
ConsoleWrite("+Clicked item ID is : " & @GUI_CtrlId & @LF)
EndFunc
Автор: Mister_Che
Дата сообщения: 23.04.2008 11:21

Цитата:
while 1
MouseClick("left", 120, 123, 1)
MouseClick("left", 913, 431, 1)
Send ("{HOME}")
MouseClick("left", 332, 552, 1)
Send("#my script")
MouseClick("left", 668, 624, 1)


For $i = 1 + $a

Send($i)

Next

$a = 1

MouseClick("left", 663, 554, 1)
MouseClick("left", 295, 120, 1)
Sleep(1000 * 5)


WEnd

Попытался решить свою проблему так. Не помогло.
Автор: ViSiToR
Дата сообщения: 23.04.2008 11:34
gregaz 09:57 23-04-2008
Цитата:
Как получить ID кликнутого элемента TreeView ?

Именно ID нужен, Handle сойдёт?


Код: #include <GUIConstants.au3>
#include <GuiTreeView.au3>
Opt("GuiOnEventMode", 1)

Global $iTV_Item_Clicked = False

$Gui = GUICreate("Test", 300, 200)
GUISetOnEvent(-3, "OnExit")

$nTreeView = GUICtrlCreateTreeView(20, 20, 260, 160, -1, $WS_EX_STATICEDGE+$WS_EX_CLIENTEDGE)
$hTreeView = GUICtrlGetHandle($nTreeView)

GUIRegisterMsg($WM_NOTIFY, "TV_Event")
GUISetState()

Initialize()

While 1
Sleep(10)

If $iTV_Item_Clicked Then
$iTV_Item_Clicked = False

Local
$hItem = _GUICtrlTreeView_GetSelection($hTreeView)
Local $sItemText = _GUICtrlTreeView_GetText($hTreeView, $hItem)

ConsoleWrite($sItemText & @LF)
EndIf
WEnd

Func
Initialize()
For $i = 1 To 50
_GUICtrlTreeView_InsertItem($nTreeView, "Item " & $i)
Next
EndFunc

Func
TV_Event($hWnd, $Msg, $wParam, $lParam)
Local $NMHDR = DllStructCreate("hwnd;uint;short", $lParam)
If DllStructGetData($NMHDR, 1) = $hTreeView And DllStructGetData($NMHDR, 3) = -451 Then $iTV_Item_Clicked = True

Return
$GUI_RUNDEFMSG
EndFunc

Func
OnExit()
Exit
EndFunc
Автор: Mister_Che
Дата сообщения: 23.04.2008 12:47
А как сделать слово состоящее из пяти случайных букв?
Автор: ViSiToR
Дата сообщения: 23.04.2008 14:29
Mister_Che 13:47 23-04-2008
Цитата:
как сделать слово состоящее из пяти случайных букв?

Если я не ошибаюсь, то я ответил тебе на этот вопрос тут .

Если всё же ошибаюсь (тогда это довольно странное совпадение), то вот этот код:


Код: $sWord = ""

For $i = 1 To 5
$sWord &= Chr(Random(97, 122, 1))
Next

MsgBox(64, "", $sWord)
Автор: Mister_Che
Дата сообщения: 23.04.2008 15:22
ЫЫЫ, это йа. Спасибо.

А с печатанием разных цифр никак нельзя сделать? Мой последний код, кажется, гениален, но не работает.
Автор: gregaz
Дата сообщения: 23.04.2008 16:04
Спасибо всем,кто откликнулся
Пока ждал нашел вот такое решение : (но только для двойного клика работает

Подстановка в стандартный $WM_NOTIFY :

Код:
Case $hWndTreeview
Switch $iCode
Case $NM_DBLCLK ;
$aa= _GUICtrlTreeView_GetSelection($hWndTreeview)        
$hWndItem=_GUICtrlTreeView_GetItemParam($hWndTreeview, $aa)     
EndSwitch
Автор: Mister_Che
Дата сообщения: 23.04.2008 17:01
А почему он в этом случае посылает $sWord, а не рандомное слово?

Цитата:
$sWord = ""
For $i = 1 To 5
$sWord &= Chr(Random(97, 122, 1))
Next
Send("$sWord")


Добавлено:
Кавычки надо снять.
Автор: Mister_Che
Дата сообщения: 24.04.2008 01:12
Решил ту свою проблему, ПОДСКАЗАЛИ НА ТОМ ФОРУМЕ. Там ларчик просто открывался на самом деле, но я не программер, никогда бы сам не догадался.
Автор: sergtch
Дата сообщения: 24.04.2008 07:59
Что-то запутался.

Надо в строке заменить символ(ы) с определенным кодом.
Например такой код должен заменить символ с кодом 133(дес.)
Код:

Код:
$Nstring = StringRegExpReplace($string, "(\x85)", "85", 0)
Автор: XpycTMD
Дата сообщения: 24.04.2008 08:08
У меня каждый понедельник в 00:00 генерируестся pdf фаил, план проверок на неделю.
В названии файла должно стоять число когда он сгенерировался (Напиример 24.04.2008) и число по какое он действителен (Напиример 01.05.2008). Как сделать так чтою бы скрипт автоматически прибовлят к дате генерации неделю и выдала конечную дату.
Автор: SysLam
Дата сообщения: 24.04.2008 08:23
sergtch
шаблон "\x##" обозначает ASCII символ, т.е. в интервале от 0 до 127 (см. справку), можно так:
Код: $Nstring = StringRegExpReplace($string, chr(133), "~")
Автор: sergtch
Дата сообщения: 24.04.2008 08:48
Как всегда, как отправил вопрос, так и дошло.

Продолжая по теме, сам шаблон я считываю из файла.
Можно ли как-то строку, вида: "chr(133)" преобразовать в функцию: chr(133) ?
Автор: XpycTMD
Дата сообщения: 24.04.2008 09:25
SysLam
Спсаибо то что надо. Смотрел в справке не заметил этой фнкции наверное
Автор: SysLam
Дата сообщения: 24.04.2008 09:47
sergtch
не понял, у тебя вместо "chr" может быть другая функция?.. иначе зачем огород городить, а не вызвать сразу Chr() ?

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192

Предыдущая тема: Quintura Search


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.