Недавние сообщения

Страницы: 1 2 [3] 4 5 ... 10
21
Тема примеров и рабочих проектов
Последнее что сам делал: проверялка наличия личных кабинетов для списка пользователей на шарепоинт портале и тулза, дергающая нужные данные из конфлюенс по api.
Из ботов: мой перс давно уже хилит без меня в рейдах  :whistle:
22
Содержимое файла 222.doc в процессе работы не меняется я так понимаю???


Добавлено: Июнь 21, 2017, 16:14:14
Если грубо и коряво то так
(нажмите для показа/скрытия)

Если необходимо использовать буфер обмена при работе с файлом 111.doc то открытие файла 222.doc и чтение из него просто засунуть в функцию _StartInsert()


Добавлено: Июнь 21, 2017, 16:18:53
А лучше тогда сразу так:
(нажмите для показа/скрытия)
23
Всем привет, хотелось бы поинтересоваться, кто и как использует Autoit для дома, на домашнем компьютере? Что именно Вы делали с помощью этого языка программирования? У меня закончились идеи, все что хотел попробовать- попробовал, но сейчас прогресс не движется, боюсь как бы не забросить все это дело :(. Может кто-то подкинет свои идеи? В игрушки я не играю, боты игровые меня не интересуют. :IL_AutoIt_1:
24
Общие вопросы по AutoIt / Re: Перехват данных из cmd и вывод в своё GUI или в txt
« Последний ответ от rpgeha Отправлен Июнь 21, 2017, 11:32:01 »
rpgeha
Цитировать
записывалось сразу в txt
В папке со скриптом должен появиться файл log.txt
Код: AutoIt [Выделить]
Run(@ComSpec & ' /c minergate-cli.exe -user [email protected] -xmr 2 > log.txt', '', @SW_HIDE)


Log.txt появляется, но он пустой. Ничего не пишется в нем. Вес 0 байт
25
Общие вопросы по AutoIt / Re: Помогите разобраться с функцией DllCall
« Последний ответ от sngr Отправлен Июнь 21, 2017, 09:40:58 »
Vovsla
Чтоб разобраться с dllcall тебе нужно открыть папку include и смотреть как там умелые люди им пользуются:
Код: AutoIt [Выделить]
    $tICONINFO = DllStructCreate($tagICONINFO)
    $Ret = DllCall('user32.dll', 'int', 'GetIconInfo', 'ptr', $hIcon, 'ptr', DllStructGetPtr($tICONINFO))
    If (@error) Or (Not $Ret[0]) Then
        Return SetError(1, 0, 0)
    EndIf

вот тебе передача в функцию структуры, вот тебе проверка ошибок.
26
Общие вопросы по AutoIt / Re: Помогите разобраться с функцией DllCall
« Последний ответ от inververs Отправлен Июнь 21, 2017, 08:17:38 »
Vovsla  [?]
Цитировать
DismInitialize может возвращать значения:
Да, может, а может другие WINAPI ошибки, но это не точно, в общем случае всегда нужно смотреть на тип возвращаемого значения, а это нулевой параметр.
Все эти DISMAPI_E_DISMAPI_ALREADY_INITIALIZED или ERROR_ELEVATION_REQUIRED это цифровые константы, но в документации microsoft никогда, (очень редко) не пишет их значения. Нужно скачивать SDK или пользоваться гуглом для поиска. Вот, например, парочка констант:
DISMAPI_E_DISMAPI_ALREADY_INITIALIZED = 1, ERROR_ELEVATION_REQUIRED = 0x800702E4, S_OK = 0
Если функция выполнилась как задумано - она должна возвращать S_OK. НО! Это все актуально если тип возвращаемого = HRESULT
Если бы функция возвращала BOOL, то в случае успеха она бы возвращала 1, а в случае ошибки 0.

Цитировать
Размерность массива $aData = 4
Да, DLLCall всегда возвращает массив! Но, только в том случае, если @error равен 0, в документации так и написано:
Успех: @error = 0.
Ошибка: Устанавливает @error
@error: 1 - невозможно использовать файл DLL,
2 неизвестный возвращаемый тип (return type).
3 функция не найдена в файле DLL.
4 неверное количество параметров.
5 неверный параметр.
Если вы ошибаетесь в количестве параметров, или имени функции, то сломаетесь еще до момента проверки результата, поэтому всегда сперва проверяется флаг @error и только затем сам результат. Как только функция отлажена, и вы уверены что правильно вызываете, то можно проверку на @error убирать. Но обычно оставляют.

Цитировать
$aData[1] всегда = 2, что это значит?
Смотрите, DLLCall вызывает функцию, которая может возвращать значения. Она может возвратить ноль, одно, два, три и так далее. Как быть и как их все получить? В других языках такие возвращаемые значения передаются в переменных по ссылкам, но не в AutoIT (с 1 исключением, struct* заполняются сами). В AutoIT подумали и решили, все, что попадает в функцию и все то, что она возвращает - возвращать в виде массива! Так и получается, сколько у функции параметров - такой и размер массива. Результат - нулевой параметр - он всегда в [ 0], в [1] - первый параметр, В [2] и [3] второй и третий параметр функции.

Почему в [1] стоит 2 - я сам туда ее передал.  ;)

С этой функцией все просто,  все параметры - входящие, не очень интересно, посмотри на
HRESULT WINAPI DismOpenSession(
  _In_     PCWSTR      ImagePath,
  _In_opt_ PCWSTR      WindowsDirectory,
  _In_opt_ PCWSTR      SystemDrive,
  _Out_    DismSession *Session
);
4 параметр(_Out_    DismSession *Session) записан как _Out_ - именно в него функция запишет результат, его можно получить как $aData[4], и т.к он параметр OUT или то, что он в документации *Session, то записывается со звездочкой в конце ('uint*', 0).
Там записан 0, т.к синтаксис требует передачу чего то. Чего - то у нас обычно либо NULL либо 0, а еще потому - что это параметр ТОЛЬКО выходной, функция вообще его не читает, ты можешь туда передавать 123124123 например, но это не разумно, поэтому 0.

Бывает, что параметр одновременно и входящий и выходящий _Inout_ тогда то, что туда передано имеет значение - нужно читать документацию.
Бывают еще _In_opt_ - входящий не обязательный, _Out_opt_ выходящий  не обязательный итп.
27
Общие вопросы по AutoIt / Re: Send() не работает, как надо, не отзывается на Ctrl
« Последний ответ от Garrett Отправлен Июнь 21, 2017, 08:03:02 »
lemonia  [?]
Цитировать
Похожая проблема
OffTopicДа что же это такое! Тема заблокирована!  >:(
Правила
ПредупреждениеЗа нарушение общих правил (пункт В.4):
Цитировать
Не лепите несколько вопросов разной тематики в один пост. По типу "Ребят, а ещё такой вопрос...". Каждый вопрос в свою тему.


С уважением, ваш Глобальный модератор.
28
Общие вопросы по AutoIt / Re: элементы окна
« Последний ответ от Garrett Отправлен Июнь 21, 2017, 07:55:11 »
ПредупреждениеЗа нарушение правил форума (пункт Б.5):
Цитировать
Имя темы должно нести смысловую нагрузку (отражать суть вопроса/проблемы)
Правильно сформулированное название темы привлекает больше внимания, и шансы получить конкретный ответ увеличиваются.

Данные правила могут пополняться локальными правилами раздела.
Как правильно называть темы

"элементы окна" - это неприемлемое название темы, переименуйте тему иначе она будет закрыта, а вам возможно будет выдан бан на несколько дней.

С уважением, ваш Глобальный модератор.
29
Общие вопросы по AutoIt / Re: Send() не работает, как надо, не отзывается на Ctrl
« Последний ответ от lemonia Отправлен Июнь 21, 2017, 07:54:21 »
Похожая проблема, помогите советом, что ещё можно попробовать сделать.
Вот это при обработке одних файлов работает, а с другими нужно вручную жать Cntrl+S. Уже Send("^s") совал после каждой строки и по несколько раз дублировал. Также и Sleep(1000); тоже вставлял дополнительно в разные места и время ожидания увеличивал.
Код: AutoIt [Выделить]
WinWaitActive("ABBYY")
 Sleep(1000);
 Send("^s")
 WinWait("Save")
 Sleep(500);

Полный код (этот отрывок ближе к концу):
Код: AutoIt [Выделить]
Const $FR_dir = "E:\Program Files\ABBYY FineReader 8.0 Professional Edition\"
Run($FR_dir&"FineReader.exe")
AutoItSetOption ( "WinTitleMatchMode" , 2 )
$search = FileFindFirstFile("*.pdf")
If $search = -1 Then
 MsgBox(0, "Error", "No pdf files")
 Exit
EndIf
While 1
 $file = FileFindNextFile($search)
 If @error Then ExitLoop
 $file_name= StringTrimRight($file, 4); имя файла без расширения ".pdf"
WinWaitActive("ABBYY")
SendKeepActive("ABBYY")
Send("^n", 0); новый пакет
Send("!f") ;
Send("v")
 WinWaitActive("Save")
 Sleep(500)
 ControlSetText ( "Save", "", "Edit1", @WorkingDir&"\"&$file_name ); создаем папку пакета
 Sleep(500)
 Send("{ENTER}")
 Sleep(500)
 Send("^o")
 Sleep(500)
 ControlSetText ( "Open", "", "Edit1", @WorkingDir&"\"&$file ); открытие и распознавание pdf файла
 Send("{ENTER}")
 WinWaitClose("Adding")
 Sleep(500)
 WinWaitActive("ABBYY")
 Sleep(500)
 Send("^+R")
 WinWaitClose("Reading")
 Sleep(500);
 WinWaitActive("ABBYY")
 Sleep(1000);
 Send("^s")
 WinWait("Save")
 Sleep(500);
 ControlSetText ( "Save", "", "Edit1", @WorkingDir&"\"&$file_name&"\"&$file_name ); сохраняем результаты распознавания в папку пакета
 Send("{ENTER}")
 Sleep(500);
 WinWaitClose("Saving")
 Send("!f")
 Send("c") ;Закрываем пакет
WEnd

FileClose($search)

 

30
Извиняюсь, если уже было. Не нашел. Есть окно программы, в окне куча всяких полей. Как получить имена полей и текст в них?
Страницы: 1 2 [3] 4 5 ... 10