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

» AutoIT

Автор: Maza Faka
Дата сообщения: 25.08.2008 09:32
avtr07

Цитата:
Чего-то не работает задержка...

Дык ты и не кликаешь Для паузы используй Sleep()
Автор: avtr07
Дата сообщения: 25.08.2008 09:34


Как не кликаю?? Что там нужно дописать, чтобы кликало?оО

Добавлено:
Фсе ништяГ, все кликает )))
Автор: Maza Faka
Дата сообщения: 25.08.2008 10:02
avtr07

Цитата:
Фсе ништяГ, все кликает )))

Вам бы батенька базу подучить

MouseClick Эта функция "кликает". А у тебя не эмуляция клика, а удерживание левой кнопки мыши и освобождение её. Соответственно опция Opt("MouseClickDelay", 6000) работать не будет.
Автор: avtr07
Дата сообщения: 25.08.2008 10:10

а координаты клика?
Автор: VladDao
Дата сообщения: 25.08.2008 10:15
Есть ли в AutoIt3 зарегестрированные клавиши завершения скрипта.
Либо надо писать . Если надо писать . Может подскажите код.
Автор: Maza Faka
Дата сообщения: 25.08.2008 11:58
avtr07

Цитата:
а координаты клика?

А в справке посмотреть трудно?

Цитата:
Из справки:
MouseClick
--------------------------------------------------------------------------------

Perform a mouse click operation.

MouseClick ( "button" [, x, y [, clicks [, speed ]]] )

Parameters

button The button to click: "left", "right", "middle", "main", "menu", "primary", "secondary".
x, y [optional] The x/y coordinates to move the mouse to. If no x and y coords are given, the current position is used (default).
clicks [optional] The number of times to click the mouse. Default is 1.
speed [optional] the speed to move the mouse in the range 1 (fastest) to 100 (slowest). A speed of 0 will move the mouse instantly. Default speed is 10.

Return Value

Success: Returns 1.
Failure: Returns 0, the button is not in the list.

VladDao

Цитата:
Есть ли в AutoIt3 зарегестрированные клавиши завершения скрипта


А разве в других скриптовых языках есть такое? Смотри в справке функцию HotKeySet()
Автор: KChernov
Дата сообщения: 25.08.2008 12:53
Неужели мои вопросы 1 и 2 такие сложные?
Автор: SIS33
Дата сообщения: 25.08.2008 14:22
Прочитал про работу скрипта для чтения каталога. А можно пример для ftp каталога
Автор: Maza Faka
Дата сообщения: 25.08.2008 14:54
SIS33

Цитата:
А можно пример для ftp каталога

Посмотри здесь
Автор: timsky
Дата сообщения: 26.08.2008 23:05
А можно как-нибудь минимизировать потреление системных ресурсов программы в покое?
Написал прожку (юзает IE.au3), сидит в трее , при выборе пункта меню в трее открывает IE, заходит на cmyip.com и кидает айпишник в буфер, показывает Balloon и закрывает IE.

После запуска жрет 0,5 мега оперативы, но после того как отработает - 5-6 мег и уже не освобождает память. Подобным образом эта прораммулька раз в час дерагет инфу с другого сайта, поэтому постоянно сидит в трее.

Как выгружать неиспользуемое? Вернуть в исходное состояние?
Автор: Maza Faka
Дата сообщения: 27.08.2008 07:28
timsky

Цитата:
Как выгружать неиспользуемое?

Пример:

Код: #include <GuiConstantsEx.au3>

Global Const $PROCESS_ALL_ACCESS = 0x1F0FFF

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

GUISetState()

_ProcessReduceMemory(@AutoItPID)

While 1
$msg = GUIGetMsg()
Switch $msg
Case $GUI_EVENT_CLOSE
ExitLoop
EndSwitch
WEnd

Func
_ProcessReduceMemory($iPID)
Local $iProcExists = ProcessExists($iPID) ;To get the PID and check process existence
Local $hOpenProc, $aResult

If Not $iProcExists Then Return SetError(1, 0, 0)
If IsString($iPID) Then $iPID = $iProcExists

$hOpenProc
= DllCall('Kernel32.dll', 'int', 'OpenProcess', 'int', $PROCESS_ALL_ACCESS, 'int', False, 'int', $iPID)
$aResult = DllCall("Kernel32.dll", "int", "SetProcessWorkingSetSize", "hwnd", $hOpenProc[0], "int", -1, "int", -1)
DllCall('Kernel32.dll', 'int', 'CloseHandle', 'int', $hOpenProc[0])

If Not IsArray($aResult) Or $aResult[0] = 0 Then Return SetError(2, 0, 0)
Return $aResult[0]
EndFunc
Автор: timsky
Дата сообщения: 27.08.2008 12:08
Спасибо
Ну нафиг такие заморочки
Автор: Maza Faka
Дата сообщения: 27.08.2008 13:04
timsky

Цитата:
Ну нафиг такие заморочки

Почему же? Просто вставь эту функцию в скрипт и вызови один раз. И ты увидишь насколько снизится потребление памяти скриптом. Я для всех своих проектов использую эту функцию. Или тебе хочется понять как работает эта функция?
Автор: timsky
Дата сообщения: 27.08.2008 15:14
Maza Faka

Цитата:
Или тебе хочется понять как работает эта функция?

Угу.
Т.е. просто вызвать _ProcessReduceMemory?
Если так, то буду тоже юзать. Спасибо!

А в двух словах можно узнать, что она делает с кернел32? Я еще с вызовами длл не заморачивался это для меня пока темный лес.


Щас потестил.. работает!
Автор: Maza Faka
Дата сообщения: 27.08.2008 16:32
timsky
ОК! Читаем:
OpenProcess
SetProcessWorkingSetSize
CloseHandle


Добавлено:
timsky
Ещё одна подобная функция:

Код: #include <GuiConstantsEx.au3>

Global Const $PROCESS_ALL_ACCESS = 0x1F0FFF

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

GUISetState()

_ProcessReduceMemory(@AutoItPID)

While 1
$msg = GUIGetMsg()
Switch $msg
Case $GUI_EVENT_CLOSE
ExitLoop
EndSwitch
WEnd

Func
_ProcessReduceMemory($iPID)
Local $iProcExists = ProcessExists($iPID) ;To get the PID and check process existence
Local $hOpenProc, $aEmptyWorkSet_Ret

If Not $iProcExists Then Return SetError(1, 0, 0)
If IsString($iPID) Then $iPID = $iProcExists

If $iPID = - 1 Then
$aEmptyWorkSet_Ret = DllCall("Psapi.dll", 'int', 'EmptyWorkingSet', 'long', -1)
Else
$hOpenProc = DllCall('Kernel32.dll', 'int', 'OpenProcess', 'int', $PROCESS_ALL_ACCESS, 'int', False, 'int', $iPID)
$aEmptyWorkSet_Ret = DllCall('Psapi.dll', 'int', 'EmptyWorkingSet', 'hwnd', $hOpenProc[0])
DllCall('Kernel32.dll', 'int', 'CloseHandle', 'int', $hOpenProc[0])
EndIf

If Not
IsArray($aEmptyWorkSet_Ret) Then Return SetError(2, 0, 0)
Return $aEmptyWorkSet_Ret[0]
EndFunc
Автор: gal7
Дата сообщения: 27.08.2008 17:07
Подскажите как можно в AutoIt открыть нужный файл какой-либо конкретной программой? StdinWrite для этого подходит? Формат записи для открытия не могу никак найти.
Автор: timsky
Дата сообщения: 27.08.2008 19:45
В основном открывается так: c:\program\program.exe c:\folder\file1.ext
У каждой программы должны быть параметры открытия из командной строки.
Если в пути есть пробел, то заключи в кавычки.
Автор: gal7
Дата сообщения: 27.08.2008 21:51

Цитата:
У каждой программы должны быть параметры открытия из командной строки

Трудновато, незнаю где их брать... Значит. кроме консоли можно только окном диалога так открывать файлы в Autoit? Ладно.
Автор: timsky
Дата сообщения: 28.08.2008 00:21
Ну ты поэкспериментируй, в документации к проге поищи. Гугль тоже еще не загнулся
Автор: Maza Faka
Дата сообщения: 28.08.2008 07:24
gal7
Смотри функции Run() и ShellExecute
Автор: gal7
Дата сообщения: 28.08.2008 22:17
Попробовал ShellExecute() сразу сработало! Спасибо огромное.
Автор: ynbIpb
Дата сообщения: 30.08.2008 14:18
Приветствую!
Такая задачка: Необходимо удалить из бинарного файла 2 фрагмента по 16 байт, изветны они мне в шестнадцатиричном виде. Надо именно удалить а не забить нулями.
Файл может иметь разнаю структуру\размер и эти две строки могут находиться в любом месте.
Пытался следующим образом:

Код: $statdata = FileOpen ( $line&"\statdata.fm", 16 );открываем файл в бинарном режиме
$ReadStatdata = FileRead($statdata);читаем файл
$HexStatdata=String ($ReadStatdata);переводим в шестнадцатиричный текст
FileClose ($statdata);закрываем файл
$trial1Full="D227A92826A8AAAAD56DF2FE00000000";первая строка
$trial2Full="7800DED71703B671D56DF2FE00000000";второя строка
$HexStatdataClean1=StringReplace ( $HexStatdata, $trial1Full, "")
$HexStatdataClean2=StringReplace ( $HexStatdataClean1, $trial2Full, "")
$BinStatdata=Binary ($HexStatdataClean2);обратно переводим их шестнадцатиричного в бинарный
$statdata2 = FileOpen ( $line&"\statdata.fm", 2+16);открываем файл в бинарном режиме + режим записи
FileWrite ( $statdata2, $BinStatdata);пишим в файл изменённые данные
FileClose ($statdata2);закрываем файл
Автор: NIKZZZZ
Дата сообщения: 30.08.2008 14:45
ynbIpb

Цитата:
Пытался следующим образом:


Попробуй так


Код: $statdata = FileOpen ( $line&"\statdata.fm", 16 );открываем файл в бинарном режиме
$ReadStatdata = FileRead($statdata);читаем файл
FileClose ($statdata);закрываем файл
$trial1Full="D227A92826A8AAAAD56DF2FE00000000";первая строка
$trial2Full="7800DED71703B671D56DF2FE00000000";второя строка
$ReadStatdata =StringReplace ( $ReadStatdata , $trial1Full, "")
$ReadStatdata =StringReplace ($ReadStatdata , $trial2Full, "")
$statdata = FileOpen ( $line&"\statdata.fm", 2+16);открываем файл в бинарном режиме + режим записи
FileWrite ( $statdata, $ReadStatdata );пишим в файл изменённые данные
FileClose ($statdata);закрываем файл
Автор: ynbIpb
Дата сообщения: 30.08.2008 15:00
Хм.. аномалия, но вдруг мой код заработал.
Единственное что поменял так это: FileOpen ( $line&"\statdata.fm", 2+16) в моём коде было сначала 16, а потом 2. А когда поменял местами, вдруг всё запахало.
А в примере я вижу выкинут код переобразования в HEX и обратно. А разве оно так будет искать шестнадцатиричные данные в бинарном файле?
Автор: NIKZZZZ
Дата сообщения: 30.08.2008 15:19
ynbIpb

Цитата:
А в примере я вижу выкинут код переобразования в HEX и обратно. А разве оно так будет искать шестнадцатиричные данные в бинарном файле?

В Autoit по сути используется один тип данных - Variant. Приведение к нужному типу осуществляется автоматом. Преобразовывать в в HEX и обратно необязательно, это преобразование будет выполнено автоматически.


Цитата:
Единственное что поменял

А вот это действительно странно.

Автор: VitAlll2013
Дата сообщения: 31.08.2008 18:49
Подскажите, есть поле GUICtrlCreateEdit, туда вывожу содержание файла. Задача изменить это содержание и по нажатии кнопки сохранить точ то наизменял и переоткрыть. Стопарюсь на "как сохранить?" Если ввожу FileOpen ("test.txt", 0) то всё нормально выводится, если ввожу 1, 2, 9 или 10, то поле пустое вовсе. Какие действия при нажатии кнопки надо делать? Считать содержимое в переменную, снова FileOpen но уже через 2... ?! Наверняка такое уже программировали, поделитесь кодом!
Автор: ViSiToR
Дата сообщения: 31.08.2008 22:33
VitAlll2013 19:49 31-08-2008
Цитата:
Считать содержимое в переменную, снова FileOpen но уже через 2... ?

Да


Код: #include <GuiConstantsEx.au3>

$sFile = @ScriptDir & "\Test.txt"
$sFileContent = FileRead($sFile)

$GUI = GUICreate("Test Script", 300, 200)
$Edit = GUICtrlCreateEdit($sFileContent, 20, 20, 260, 120)
$Save_Button = GUICtrlCreateButton("Save", 20, 160, 60, 20)

GUISetState(@SW_SHOW, $GUI)

While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
Case
$Save_Button
$sEditContent
= GUICtrlRead($Edit)

If $sEditContent <> $sFileContent Then
$sFileContent = $sEditContent

$hFOpen
= FileOpen($sFile, 2)
FileWrite($hFOpen, $sFileContent)
FileClose($hFOpen)

MsgBox(64, "Done!", "Data is saved!", 0, $GUI)
Else
MsgBox(48, "Attention!", "There is no changes to the data.", 0, $GUI)
EndIf
EndSwitch
WEnd
Автор: mityasav55
Дата сообщения: 01.09.2008 02:26
;первая строка

$coord = PixelSearch(150, 450, 260, 500, 0x21598F, 0, 1)
sleep(50)
mouseClick("right", $coord[0] + 1, $coord[1], 1, 0)
sleep(50)
Send("{DOWN 3}")
sleep(50)
send("{ENTER}")
sleep(100)



PixelSearch (левая координата прямоугольника.верхняя координата прямоугольника.правая координата прямоугольника.верхняя координата прямоугольника. десятичное значение цвета. 0xE6E6E6
в данном случае что есть что не могу разобрать и правильно я написал шестнацетиричный формат цвета в данном случае или нет. Хотелось бы
$coord = PixelSearch ........................ тут вот мне интерсно что и где будет стоять из моего скрины. подскажите plz очень нужно. В этом деле новичок сильно не пинать


Автор: VitAlll2013
Дата сообщения: 01.09.2008 09:47
ViSiToR
Спасибо! Почти всё получилось. Но вот такое дополнение к задаче есть:
Существуют 2 радиокнопки. Одна высвечивает содержание test1.txt, вторая - test2.txt. Кнопка сэйв сохраняет то, что показано.
Стопор возникает так: высвечиваю text1, меняю, сохраняю, активирую text2, снова активирую text1 - пусто. Ничего нет, при этом я повесил повторный FileRead на каждую радиокнопку. Что-то не так. Пытался както переоткрыть файл через FileOpen (..., 0), но файл стирается... (это вообще не ясно) Нельзя ли дополнить код двумя радиокнопками?
Автор: Maza Faka
Дата сообщения: 01.09.2008 10:07
VitAlll2013
Покажи код.

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192

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


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