Что нового

Расширение стандартной AutoIt библиотеки WinAPI.au3

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Yashied
IMHO нужно WinAPI.au3 оставить интегрированной в вашу библиотеку. Потому как обновляется она чаще.
А в других библиотеках просто в пакетном режиме заменить строку #include <WinAPI.au3> на #include <WinAPIEx.au3>
SciTE сделает это за пару секунд :smile:
 

WSWR

AutoIT Гуру
Сообщения
941
Репутация
363
Присоединяюсь к поздравлениям! :IL_AutoIt_1:


Есть очень полезная функция _WinAPI_EnumChildWindows
Думаю, возможно в нее (или сделать _WinAPI_EnumChildWindowsEx) прямо добавить фильтрацию дочерних элементов по классу (классам).
Обычно требуется получить хэндлы не всех элементов, а элементов, принадлежащих только к каком-то классу - только кнопки или только надписи, и т.п., чтобы далее работать с ними.
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
хм... а разве, после интеграции WinAPI с WinAPIEx, последнее не станет просто WinAPI? :smile:
 

Asshaker

Знающий
Сообщения
150
Репутация
17
Есть ли справка по данной библиотеке?
http://autoit-script.ru/index.php/topic,1425.60.html
тут ссылки мертвые :(
 

ynbIpb

Скриптер
Сообщения
399
Репутация
110
Почему то не работает _WinAPI_GetModuleFileNameEx (не возвращает путь, Error=1)
Версия AutoIt 3.3.8.1
Windows XP SP3 x86 и Windows 7 SP1 X64
Код:
#Include <WinAPIEx.au3>
$sFilePath = _WinAPI_GetModuleFileNameEx(2972) ; определяем путь к исполняемому файлу по PID
MsgBox (0, "", $sFilePath&@CRLF&"Error: "&@error)
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Вы случайно не спутали с функцией
Код:
_WinAPI_GetProcessFileName
которая определяет путь по PID?
Если нет, то почитайте внимательно описание к
Код:
_WinAPI_GetModuleFileNameEx
и посмотрите какие параметры передаются.
 

ynbIpb

Скриптер
Сообщения
399
Репутация
110
Дык раньше в старых моих скриптах я именно так использовал эту функцию и она работала.
Сейчас почитал справку и нашел функцию _WinAPI_GetProcessFileName. То, что нужно.
 
Автор
Yashied

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Обновил библиотеку до версии 3.8.

Список изменений:
  • Добавлены следующие функции.

    _WinAPI_CLSIDFromProgID
    _WinAPI_CreateBufferFromStruct
    _WinAPI_CreateFontEx
    _WinAPI_DwmDefWindowProc
    _WinAPI_DwmGetColorizationParameters
    _WinAPI_DwmSetColorizationParameters
    _WinAPI_EnumFontFamilies
    _WinAPI_FileIconInit
    _WinAPI_GetBrushOrg
    _WinAPI_GetEffectiveClientRect
    _WinAPI_GetFontName
    _WinAPI_GetMUILanguage
    _WinAPI_GetPEType
    _WinAPI_GetTabbedTextExtent
    _WinAPI_OpenFileDlg
    _WinAPI_InitMUILanguage
    _WinAPI_IsNameInExpression
    _WinAPI_IsPathShared
    _WinAPI_MirrorIcon
    _WinAPI_ProgIDFromCLSID
    _WinAPI_SaveFileDlg
    _WinAPI_SearchPath
    _WinAPI_SetBrushOrg
    _WinAPI_SetFileValidData
    _WinAPI_SetSearchPathMode
    _WinAPI_ShellCreateDirectory
    _WinAPI_ShellExecuteEx
    _WinAPI_ShellFlushSFCache
    _WinAPI_ShellGetIconOverlayIndex
    _WinAPI_ShellGetImageList
    _WinAPI_ShellGetKnownFolderIDList
    _WinAPI_ShellSetKnownFolderPath
    _WinAPI_ShellUpdateImage
    _WinAPI_TabbedTextOut
    _WinAPI_TerminateJobObject
    _WinAPI_TerminateProcess
    _WinAPI_UpdateLayeredWindowIndirect
    _WinAPI_UserHandleGrantAccess

  • Добавлены примеры к вышеперечисленным функциям.
  • Добавлено несколько констант и структур.
  • Добавлен файл NTErrors.au3 (опционально), содержащий значения NTSTATUS кодов.
  • Добавлен один опциональный параметр в функции _WinAPI_MapVirtualKey() (см. описание).
  • Функция _WinAPI_EnumDllProc() теперь работает в Windows XP (требуется dbghelp.dll версии 5.1 или более поздней).
  • Функция _WinAPI_EnumProcessHandles() теперь работает как для 32-, так и для 64-битных систем.
  • Функция _WinAPI_GetProcAddress() теперь работает с порядковыми значениями функций (только для AutoIt 3.3.6.1).
  • Исправлена ​​утечка памяти в функции _WinAPI_AssocGetPerceivedType().
  • Некоторые внутренние изменения в коде.
  • Обновлена документация.

Это последнее обновление этой библиотеки как самостоятельного проекта. Так как WinAPIEx UDF будет включен в AutoIt v4 в том или ином виде, то я прекращаю его поддержку в этой ветке. Все изменения теперь будут происходить через AutoIt Issue Tracker или Баг-репорты и запросы на новые функции на этом форуме после оффициального релиза AutoIt v4. Не просите здесь о добавлении новых функций, только критические ошибки для быстрого обновления.

Спасибо всем, кто принимал участие в разработке этой библиотеки.

Проект закрыт.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Я только сейчас начинаю понимать всю мощь этой библиотеки, и не пользуюсь ей по полной по одной лишь причине: мне страшно, реально страшно, там слишком много вкусностей, боюсь утонуть в этом всём :laugh:.

Ну а если по делу....

1) В примере к _WinAPI_ShellUserAuthenticationDlg (тот же пример и в _WinAPI_ConfirmCredentials) есть небольшая ошибка:
Код:
If (StringCompare($Data[0], 'AutoIt')) Or (StringCompare($Data[1], _StringEncrypt(0, 'DC7E430A1C88', '123'))) Then

должно быть
Код:
If (StringCompare($Data[0], 'AutoIt')) And (StringCompare($Data[1], _StringEncrypt(0, 'DC7E430A1C88', '123'))) Then

иначе всё время неверный пароль.

И ещё, вот к примеру я нажал «Сохранить пароль», теперь каждый раз появляется последний логин и пароль, как это удалить?

2) Понимаю что это много работы, но было бы неплохо иметь в справке список функции по категориям, чтобы легче было искать то что нужно.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Yashied [?]
WinAPIEx UDF будет включен в AutoIt v4
4? :blink:
Мне кажется до AutoIt v4 ещё будет очень много версии, или у тебя другая информация?
 
Автор
Yashied

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
CreatoR сказал(а):
Мне кажется до AutoIt v4 ещё будет очень много версии, или у тебя другая информация?

Почитай ветку MVP.

CreatoR сказал(а):
Понимаю что это много работы, но было бы неплохо иметь в справке список функции по категориям, чтобы легче было искать то что нужно.

Сейчас над адаптацией WinAPIEx занимается jpm... Разделение в соответствии с MSDN тоже стоит в планах.
 

querubin_new

Новичок
Сообщения
10
Репутация
0
:stars: ссылки не работают на скачивание библиотеки... пишет - ошибка сервиса... помогите - очень надо :'(
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
querubin_new
здесь http://narod.ru/disk/60726926001.639527a0a269fb94a48a0318b9633f02/winapiex.rar.html
установочные варианты
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
Скачал последнюю версию SciTE4AutoIt3 "including SciTE 3.20 (Juni 10, 2012)". Оказалось, что в ней файлы au3.UserUdfs.properties и au3.user.calltips.api должны находиться в папке пользовательского профиля. Поэтому установка данной библиотеки при помощи инсталлятора не приносит ожидаемого результата - подсказки и описания не появляются.
 

AntiChat

Новичок
Сообщения
4
Репутация
0
Столкнулся вот с такой проблемой:
"C:\Program Files (x86)\AutoIt3\Include\WinAPIEx.au3" (961) : ==> Variable cannot be accessed in this manner.:
Код:
Global Const $__WINVER = __WINVER()
Global Const $__WINVER = __WINVER^ ERROR


Вообщем скрипт компилируется, но при запуске вот такая ошибка... Система Windows 8 x64, версия AutoIt 3.3.9.5
 

WSWR

AutoIT Гуру
Сообщения
941
Репутация
363
Есть функция _WinAPI_CreateGUID()

Вопрос - если по-простому, она только возвращает уникальную строку или делает еще что-то?
 
Верх