Что нового

Развитие русской справки

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,673
Репутация
2,486
AZJIO [?]
Функция _Timer_KillAllTimers не удаляет WM_TIMER сообщения уже размещёных в очередь сообщений
Возможно так будет лучше:
Функция _Timer_KillAllTimers не удаляет сообщения WM_TIMER помещённые в очередь сообщений до её вызова
или
Функция _Timer_KillAllTimers не удаляет сообщения WM_TIMER ранее помещённые в очередь сообщений

что за очередь непонятно
Ну видимо речь про вызовы которые делаются с небольшим интервалом, и не успевают обрабатываться, вот и образуется очередь выполнения.
 

Naisho

Знающий
Сообщения
86
Репутация
12
Заметил пару вещей

функция
Код:
_WinAPI_Mouse_Event($iFlags [, $iX = 0 [, $iY = 0 [, $iData = 0 [, $iExtraInfo = 0]]]])

имеет возможность установки флага $MOUSEEVENTF_ABSOLUTE. Предполагается что при его установке получим работу функции по абсолютным координатам, однако это не совсем так - как оказалось абсолютные координаты надо ещё вычислить:
Код:
$x = Ceiling($x*65535/@DesktopWidth)
$y = Ceiling($y*65535/@DesktopHeight)

что совершенно не очевидно, при этом ссылка "Искать mouse_event в библиотеке MSDN" ведёт в пустоту
ответ нашёл тут http://www.autoitscript.com/forum/topic/129149-mouseclickfast-mousemovefast/page__hl__%2B_winapi_mouse_event
может стоит вставить этот пример в справку?

И ещё - почему-то в Полном комплекте справки не нашёл WinAPIEx.au3...
 
Автор
A

AZJIO

Меценат
Меценат
Сообщения
2,894
Репутация
1,196
Naisho [?]
однако это не совсем так - как оказалось абсолютные координаты надо ещё вычислить
Естественно надо вычислить, относительность это всего лишь точка отсчёта. Там и в описании это указано, что требуется указать $iX и $iY.
Я перевёл функцию и пример добавил, но не нашёл в ней чего то полезного. Чем вас MouseClick не устраивает? Работает в разы быстрее. Просто получается время зря потратил на сомнительную функцию.

В функции StringUpper количество связанных ссылок просто бессмысленно.
StringIsLower, StringIsUpper, StringInStr, StringLeft, StringLen, StringLower, StringMid, StringRight, StringTrimLeft, StringTrimRight, StringCompare, StringIsAlNum, StringIsAlpha, StringIsASCII, StringIsSpace, StringIs:rofl:igit, StringReplace, StringSplit
Во многих функциях также замечал что связанная или противоположная функцию, которую больше всего ожидаешь может либо отсутствовать либо быть в средине и смысла от таких ссылок теряется, если проще в дереве найти. Думаю надо откорректировать это.

Обновление UDFs3.
Переведено 48 функций _GUICtrlRebar_... (остальные недопереведены)
Переведено 4 функции _WinAPI_...
_WinAPI_DrawFrameControl
_WinAPI_Mouse_Event
_WinAPI_OpenProcess
_WinAPI_SetEndOfFile

AutoIt3 откорректировал связанные ссылки. Список функций под "См. также".
Обновил исходники и онлайн патч.
 

Naisho

Знающий
Сообщения
86
Репутация
12
Чем вас MouseClick не устраивает? Работает в разы быстрее.
MVP с официального форума утверждает, что _WinAPI_Mouse_Event работает в 40-50 раз быстрее MouseClick. Но в моём случае MouseClick по какой то причине изредка пропускал клики (или они не опознавались), поэтому пришлось искать альтернативу. Удачным кандидатом показался _WinAPI_Mouse_Event, однако не смог понять логику - пишут, что при установке флага - абсолютные координаты, без - относительные. Про нормализацию упомянуто, но какая она болжна быть - пришлось искать.
В любом случае, при работе через _WinAPI_Mouse_Event пропусков кликов ещё не было.
(честно говоря, если бы удалось наладить надёжное подключение к встроенному Internet Explorer_Server через IE.au3, от кликов бы вообще ушёл)
 
Автор
A

AZJIO

Меценат
Меценат
Сообщения
2,894
Репутация
1,196
Naisho
Да, теперь проверил, просто воспринял, что там указано время, а не количество кликов.

Я ещё тестил относительные координаты, с ними вообще бессмыслица получается. Ладно бы шаг мыши не совпадал с пикселями, так он ещё и не пропорциональный.

Код:
#include <Constants.au3>
#include <WinAPI.au3>
$k = 500 ; пикселы.. при изменении коэф. разный.
MouseMove(0, 0, 0)
_WinAPI_Mouse_Event($MOUSEEVENTF_MOVE, $k, $k) ; 790, 640
$a = MouseGetPos()
MsgBox(0, 'Сообщение', 'Пиксель X = ' & $a[0] & ', Коэф = ' & $a[0] /$k &@LF & 'Пиксель Y = ' & $a[0] & ', Коэф = ' & $a[0] /$k)
 
Автор
A

AZJIO

Меценат
Меценат
Сообщения
2,894
Репутация
1,196
FileFindFirstFile
Успех: Возвращает "дескриптор поиска" для дальнейшего использования в функции FileFindNextFile.
Ошибка: Возвращает -1, если произошла ошибка. Если каталог пуст, значение @error устанавливается равным 1.
1. Как и функция FileOpen возвращается не дескриптор, а порядковый номер идентифицирующий открытый дескриптор. Видимо внутренний механизм хранит массив открытых файловых дескрипторов. Получается, что функция возвращает указатель на дескриптор или идентификатор, тип данных int32.
2. Формулировка "произошла ошибка" подразумевает @error принимает значение не равное 0. На самом деле -1 возвращается если ничего не найдено. Например путь не существует или в папке нет файлов соответствующих маске. При этом @error=1 только для случая пустого каталога.
Ошибка: Возвращает -1, если ничего не найдено. Значение @error устанавливается равным 1 только если каталог пуст.
 
Автор
A

AZJIO

Меценат
Меценат
Сообщения
2,894
Репутация
1,196
Обновил AutoIt3.chm, плавно переход на версию 3.3.8.1
 
Автор
A

AZJIO

Меценат
Меценат
Сообщения
2,894
Репутация
1,196
UDFs3.chm - обновлён до версии 3.3.8.0 кроме примеров.
1. В структурах ($tag...) много изменений, пришлось автоматизировать, часть кода между ###Syntax### и ###Fields###, которая не содержит перевод обновлять регулярным выражением.
2. Непонятно почему, но формат строки синтаксиса функции UDFs3.chm отличается от AutoIt3.chm и приведена к одному виду, поэтому также обрабатывалась скриптом.
3. Многие функции _GUICtrl... позволяют использовать идентификатор вместо дескриптора, эта часть тоже была выполнена автозаменой используя список файлов, которые содержали такую строку.

С помощью программы сравнения каталогов сравнивались англоязычный вариант справки 3.3.6.1 и 3.3.8.0, разница вводилась в русский вариант справки. С помощью скриптов файлы справки 3.3.6.1 были приведены в максимальную совпадение с 3.3.8.0, оставшиеся 200 файлов из 2000, пришлось править вручную.
Много редактирования в разделе SQLite. По тексту особых изменений нет (кроме указанного выше), в основном ошибки, вырезание упоминаний о Win98, NT.

Добавлены функции (не переведены):
$tagTEXTMETRIC
_ColorGetCOLORREF
_ColorSetCOLORREF
_GUICtrlTab_ActivateTab
_SQLite_FastEncode
_SQLite_FastEscape
_WinAPI_DuplicateHandle
_WinAPI_GetTextMetrics
_WinAPI_StringLenA
_WinAPI_StringLenW
 
Автор
A

AZJIO

Меценат
Меценат
Сообщения
2,894
Репутация
1,196
UDFs3.chm - обновлён, все примеры модернизированы до версии 3.3.8.1

Для модернизации были выполнены действия:
1. Примеры справки 3.3.6.1 обработаны Tidy
2. Файлы, в которых тексты не содержали ни одной русской буквы, были скопированы в чистом виде
2. Далее автозамены:
а) удаление упоминаний AutoIt3Wrapper_Au3Check_Parameters
б) удаление MustDeclareVars
в) удаление пробельных символов в конце файла
г) удаление строк, в которых только пробельные символы или один ";"
д) автозамены стандартных имён UDF согласно регистру оригиналов
e) замена "MsgBox(0, " на "MsgBox(4096, "
3. Те скрипты в которых разница только в Local и Dim копировались в чистом виде в 3.3.6.1 (более 700 файлов атоматически). По принципу удалить в оригинале и в новом пробелы и указанные Local и Dim если временные обработанные тексты совпадали, то оригинал импортировать. Соответственно эти изменения не попали в новый вариант русской справки 3.3.8.1. Планируется варианты с Dim обновить, а обновление ради Local особого смысла нет.
4. Автозамены с разницей $hGUI

После всех автозамен из ~1800 файлов осталось только 200, которые пришлось править вручную. В основном исправление ошибок, удаление объявленных переменных, не использующихся в коде. В некоторые разделы зачем то добавлены вывод-проверка что возвращаемые данные являются дескриптором и указателем.

Сравнение 3.3.8.0 с 3.3.8.1 показало отсутствие каких либо различий в справке, и по описанию в "истории обновлений" разница в
- Fixed: Built-in editor would not compile/go when installed on x64 or in a non-standard location.
по этому справку 3.3.8.0 можно считать что 3.3.8.1.


Добавлено:
Сообщение автоматически объединено:

Обновлён полный комплект


Добавлено:
Сообщение автоматически объединено:

Обновил UDFs3.chm. В связи с тем, что в CHM работают ссылки вида "AutoIt3.chm::/html/functions/INetGet.htm", сделал в примерах UDFs3.chm ссылки на функции AutoIt3.chm.
 
Автор
A

AZJIO

Меценат
Меценат
Сообщения
2,894
Репутация
1,196
Обновил UDFs3.chm, примеры обновлены до 3.3.9.5, кроме функциональных изменений, только ошибки. В основном улучшение кода в разделе _ClipBoard_... , префикс переменных в разделе _GUICtrlEdit_...
Улучшен пример в _ArrayFindAll, на 90% переведён _MemGlobalAlloc, исправлена ошибка в _ExcelBookNew.
Кстати на 3.3.6.1 работал пример _WinAPI_GetWindow и _WinAPI_GetWindowLong, вернее в _ArrayDisplay работало установка названия колонок, на 3.3.8.1 не работает и не пойму почему. Если удалить лишние параметры то работает.
 
Автор
A

AZJIO

Меценат
Меценат
Сообщения
2,894
Репутация
1,196
Mod
This function does not guarantee that dividend or divisor can be represented accurately, specifically with floating point numbers.

Эта функция не гарантирует правильный результат, при использовании чисел, которые могут быть представлены точными числами, особенно с числами с плавающей точкой.
Не много несвязное предложение. Предлагаю заменить на:
Эта функция не гарантирует достоверный результат, при использовании чисел double и float (с плавающей точкой).
Причина: в справке по СИ
Оператор % к операндам типов float и double не применяется. В какую сторону (в сторону увеличения или уменьшения числа) будет усечена дробная часть при выполнении / и каким будет знак результата операции % с отрицательными операндами, зависит от машины.
 
Автор
A

AZJIO

Меценат
Меценат
Сообщения
2,894
Репутация
1,196
AutoIt3.7z - скриптом переведены "[необязательный] д....." в "[необязательный] Д.....", то есть 148 замен начало предложения в верхний регистр. Исправление в функциях Mod, FileWrite, FileWriteLine, InetGetInfo (спасибо gora за выявление неточностей в трактовке).

UDFs3.7z - скриптом переведены "[необязательный] д....." в "[необязательный] Д.....", то есть 12 замен начало предложения в верхний регистр. Исправление в функциях _PathSplit (возвращаемое в читабельный вид), некоторые функции _GUICtrlRichEdit_... ввиду исправлений их возвращаемых значений (старое всё равно неверно), $tagREBARBANDINFO (почему то ComboBoxEx указывалось).
 
Автор
A

AZJIO

Меценат
Меценат
Сообщения
2,894
Репутация
1,196
UDFs3.7z ссылки те же, переведены или допереведены функции:
_IEBodyReadHTML
_IECreateEmbedded
_IEErrorHandlerDeRegister
_IEErrorHandlerRegister
_IEErrorNotify
_IELoadWaitTimeout
_IENavigate
 

joiner

Модератор
Локальный модератор
Сообщения
3,557
Репутация
628
в функции _FO_FileSearch нашел, по моему мнению, баг: если вместо пути указана пустая строка, то идет поиск всех файлов. пустой путь должен считаться ошибкой. то есть как несуществующий.
 
Автор
A

AZJIO

Меценат
Меценат
Сообщения
2,894
Репутация
1,196
joiner
Исправил (в трёх функциях). Неожидал такого поведения:
Код:
$sPath = '\'
$sPath = '.'
$sPath = '..'
MsgBox(0, FileExists($sPath), $sPath)

Строку с FileExists просто переместить на строку выше, до проверки '\'. Если что обсуждение тут

Как думаете, форматированную строку на жёлтом фоне в справке стоит подсветить? "narod2.ru" пока недоступен, вот картинкой.
 
Автор
A

AZJIO

Меценат
Меценат
Сообщения
2,894
Репутация
1,196
Hex
Возвращает преобразованное в бинарный тип.
будет заменено на
Возвращает строку содержащую преобразованное из бинарного типа.
Потому Hex возвращает всегда строку.

Shutdown
таблицу значений из "Примечания" перенёс в таблицу параметров, для параметра code.
До сих пор остаётся загадочным параметр
reason | Пользовательский код причины завершения работы
Это код который система отправляет приложению? Типа причины и способ завершения?
 

Naisho

Знающий
Сообщения
86
Репутация
12
После инсталятора справки выдало:
C:\Program Files (x86)\AutoIt3\Include\_DateDiff_2.au3(56,34) : WARNING: $d possibly not declared/created yet
$d = __DateDiff_2($Old, $New)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files (x86)\AutoIt3\Include\resources.au3(9,28) : ERROR: $RT_CURSOR previously declared as a 'Const'.
Global Const $RT_CURSOR = 1
~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files (x86)\AutoIt3\Include\resources.au3(10,28) : ERROR: $RT_BITMAP previously declared as a 'Const'.
Global Const $RT_BITMAP = 2
~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files (x86)\AutoIt3\Include\resources.au3(11,26) : ERROR: $RT_ICON previously declared as a 'Const'.
Global Const $RT_ICON = 3
~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files (x86)\AutoIt3\Include\resources.au3(12,26) : ERROR: $RT_MENU previously declared as a 'Const'.
Global Const $RT_MENU = 4
~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files (x86)\AutoIt3\Include\resources.au3(13,28) : ERROR: $RT_DIALOG previously declared as a 'Const'.
Global Const $RT_DIALOG = 5
~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files (x86)\AutoIt3\Include\resources.au3(14,28) : ERROR: $RT_STRING previously declared as a 'Const'.
Global Const $RT_STRING = 6
~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files (x86)\AutoIt3\Include\resources.au3(15,29) : ERROR: $RT_FONTDIR previously declared as a 'Const'.
Global Const $RT_FONTDIR = 7
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files (x86)\AutoIt3\Include\resources.au3(16,26) : ERROR: $RT_FONT previously declared as a 'Const'.
Global Const $RT_FONT = 8
~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files (x86)\AutoIt3\Include\resources.au3(17,33) : ERROR: $RT_ACCELERATOR previously declared as a 'Const'.
Global Const $RT_ACCELERATOR = 9
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files (x86)\AutoIt3\Include\resources.au3(18,29) : ERROR: $RT_RCDATA previously declared as a 'Const'.
Global Const $RT_RCDATA = 10
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files (x86)\AutoIt3\Include\resources.au3(19,35) : ERROR: $RT_MESSAGETABLE previously declared as a 'Const'.
Global Const $RT_MESSAGETABLE = 11
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files (x86)\AutoIt3\Include\resources.au3(20,35) : ERROR: $RT_GROUP_CURSOR previously declared as a 'Const'.
Global Const $RT_GROUP_CURSOR = 12
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files (x86)\AutoIt3\Include\resources.au3(21,33) : ERROR: $RT_GROUP_ICON previously declared as a 'Const'.
Global Const $RT_GROUP_ICON = 14
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files (x86)\AutoIt3\Include\resources.au3(22,30) : ERROR: $RT_VERSION previously declared as a 'Const'.
Global Const $RT_VERSION = 16
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files (x86)\AutoIt3\Include\resources.au3(23,33) : ERROR: $RT_DLGINCLUDE previously declared as a 'Const'.
Global Const $RT_DLGINCLUDE = 17
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files (x86)\AutoIt3\Include\resources.au3(24,31) : ERROR: $RT_PLUGPLAY previously declared as a 'Const'.
Global Const $RT_PLUGPLAY = 19
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files (x86)\AutoIt3\Include\resources.au3(25,26) : ERROR: $RT_V:rofl: previously declared as a 'Const'.
Global Const $RT_V:rofl: = 20
~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files (x86)\AutoIt3\Include\resources.au3(26,32) : ERROR: $RT_ANICURSOR previously declared as a 'Const'.
Global Const $RT_ANICURSOR = 21
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files (x86)\AutoIt3\Include\resources.au3(27,30) : ERROR: $RT_ANIICON previously declared as a 'Const'.
Global Const $RT_ANIICON = 22
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files (x86)\AutoIt3\Include\resources.au3(28,27) : ERROR: $RT_HTML previously declared as a 'Const'.
Global Const $RT_HTML = 23
~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files (x86)\AutoIt3\Include\resources.au3(29,31) : ERROR: $RT_MANIFEST previously declared as a 'Const'.
Global Const $RT_MANIFEST = 24
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files (x86)\AutoIt3\Include\resources.au3(31,40) : ERROR: $SND_RESOURCE previously declared as a 'Const'.
Global Const $SND_RESOURCE = 0x00040004
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files (x86)\AutoIt3\Include\resources.au3(32,29) : ERROR: $SND_SYNC previously declared as a 'Const'.
Global Const $SND_SYNC = 0x0
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files (x86)\AutoIt3\Include\resources.au3(33,30) : ERROR: $SND_ASYNC previously declared as a 'Const'.
Global Const $SND_ASYNC = 0x1
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files (x86)\AutoIt3\Include\resources.au3(34,31) : ERROR: $SND_MEMORY previously declared as a 'Const'.
Global Const $SND_MEMORY = 0x4
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files (x86)\AutoIt3\Include\resources.au3(35,29) : ERROR: $SND_LOOP previously declared as a 'Const'.
Global Const $SND_LOOP = 0x8
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files (x86)\AutoIt3\Include\resources.au3(36,32) : ERROR: $SND_NOSTOP previously declared as a 'Const'.
Global Const $SND_NOSTOP = 0x10
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files (x86)\AutoIt3\Include\resources.au3(37,34) : ERROR: $SND_NOWAIT previously declared as a 'Const'.
Global Const $SND_NOWAIT = 0x2000
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files (x86)\AutoIt3\Include\resources.au3(38,31) : ERROR: $SND_PURGE previously declared as a 'Const'.
Global Const $SND_PURGE = 0x40
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files (x86)\AutoIt3\Include\resources.au3(140,55) : WARNING: $hImage possibly not declared/created yet
$hImage = _GDIPlus_BitmapCreateFromHBITMAP($ResData)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files (x86)\AutoIt3\Include\resources.au3(161,57) : WARNING: $hImage possibly not declared/created yet
$hImage = _ResourceGetAsImage($ResName, $ResType, $DLL)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files (x86)\AutoIt3\Include\resources.au3(163,60) : WARNING: $hBitmap possibly not declared/created yet
$hBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files (x86)\AutoIt3\Include\resources.au3(174,52) : WARNING: $hImage possibly not declared/created yet
$hImage = _ResourceGetAsImage($ResName, $ResType)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files (x86)\AutoIt3\Include\resources.au3(289,18) : WARNING: $hInstance possibly not declared/created yet
$hInstance = 0

думается сие не есть хорошо...
 
Автор
A

AZJIO

Меценат
Меценат
Сообщения
2,894
Репутация
1,196
Naisho
_DateDiff_2 поправлю, а resources.au3 это к автору на официальном сайте. Возможно в новой версии эти константы определены, а UDF писалась на старой версии. Или у вас какая то подобная UDF с теми же константами конфликтует с resources.au3, потому что у меня поиск констант показал единственный экземпляр этих констант (все не проверял).
 
Верх