Что нового

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

sforce5

Олл фо ЛулзЪ
Сообщения
160
Репутация
41
Вот подумал, может пригодятся!

Код:
; Author: sforce5
Func _shlwapi_PathIsURLW($sURL)
	Return DllCall("shlwapi.dll", "int", "PathIsURLW", "wstr", $sURL)
EndFunc

; Author: sforce5
Func _shlwapi_PathIsNetworkPathW($sPath)
	$ret = DllCall("shlwapi.dll", "int", "PathIsNetworkPathW", "wstr", $sPath)
	Return $ret[0]
EndFunc

; Name...........: _WinAPI_SetConsoleTextAttribute
; Description ...: Changes the text and/or background color of text in the Windows console.
; Syntax.........: _WinAPI_SetConsoleTextAttribute($hConsole, $iColor, $hDLL = "Kernel32.dll")
; Parameters ....: $hConsole    - Handle to the console screen buffer
;                  $iColor      - Color style to apply to the console.
;                  $hDLL        - Handle to the DLL to call. (Leave blank to open Kernel32.dll each call)
; Return values .: Success      - True
;                  Failure      - False
; Author ........: Ken Piper (Kealper)
; URL ............: http://www.autoitscript.com/forum/index.php?showtopic=110218
Func _WinAPI_SetConsoleTextAttribute($hConsole, $iColor)
    $ret = DllCall("Kernel32.dll", "BOOL", "SetConsoleTextAttribute", "HANDLE", $hConsole, "WORD", $iColor)
    If @error Then Return SetError(@error, @extended, False)
    Return $ret[0]
EndFunc


Ещё нашёл огромное кол-во функций user32.dll (автора незнаю)
 

sforce5

Олл фо ЛулзЪ
Сообщения
160
Репутация
41
Как нибудь можно подключиться к удалённому реестру посредством RegOpenKey, RegEnumKey?
 
Автор
Yashied

Yashied

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

Нет, для этого нужно использовать вот эту функцию. И естественно, на удаленном компьютере должна быть включена соответствующая служба.
 

sforce5

Олл фо ЛулзЪ
Сообщения
160
Репутация
41
Yashied сказал(а):
Нет, для этого нужно использовать вот эту функцию. И естественно, на удаленном компьютере должна быть включена соответствующая служба.

Эх, не силён я пока в этом. Может поможет кто-нибудь? :beer:
 
Автор
Yashied

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Да вообщем-то тут ничего сложного нет, только не забудь включить службу удаленного реестра.

Код:
#Include <WinAPIEx.au3>

$hKey = _WinAPI_RegConnectRegistry('\\Vasya', $HKEY_LOCAL_MACHINE)
If @error Then
	MsgBox(16, 'Error', 'Error code: ' & @extended)
	Exit
EndIf
...
_WinAPI_RegCloseKey($hKey)

Func _WinAPI_RegConnectRegistry($sMachineName, $hKey)

	Local $Ret = DllCall('advapi32.dll', 'long', 'RegConnectRegistryW', 'wstr', $sMachineName, 'ulong_ptr', $hKey, 'ulong_ptr*', 0)

	If @error Then
		Return SetError(1, 0, 0)
	Else
		If $Ret[0] Then
			Return SetError(1, $Ret[0], 0)
		EndIf
	EndIf
	Return $Ret[3]
EndFunc   ;==>_WinAPI_RegConnectRegistry
 
Автор
Yashied

Yashied

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

Исправления:
  • Функция _WinAPI_ColorHLSToRGB() возвращает неверное значение цвета, если значение $iSaturation равно 0. (Спасибо Ascend4nt)
  • Неверное описание структуры $tagPROCESS_MEMORY_COUNTERS.

Добавленные функции:
_WinAPI_AssignProcessToJobObject
_WinAPI_CreateJobObject
_WinAPI_CreateStreamOnHGlobal
_WinAPI_DWordToInt
_WinAPI_GetProcessIoCounters
_WinAPI_GetHGlobalFromStream
_WinAPI_IntToDWord
_WinAPI_OpenJobObject
_WinAPI_QueryInformationJobObject
_WinAPI_RadialGradientFill
_WinAPI_RegConnectRegistry
_WinAPI_SetInformationJobObject

+ примеры
 
Автор
Yashied

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Добавил справочный файл (WinAPIEx.chm внутри архива), содержащий подробную информацию и примеры для всех функций из этой библиотеки. Огромное человеческое спасибо CreatoR'у за помощь в создании (генерации) HTML страниц для этого файла.
 
Автор
Yashied

Yashied

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

VitAl2013

Гость
А можно пример с _WinAPI_UnlockFile ?
Не совсем понимаю, как правильно взять второе и третье значение.
 
Автор
Yashied

Yashied

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

Список изменений:
  • Следующие функции переименованы с изменением их заголовков (см. документацию).

    _WinAPI_AddFontResource => _WinAPI_AddFontResourceEx
    _WinAPI_RemoveFontResource => _WinAPI_RemoveFontResourceEx

  • Изменен заголовок у следующих функций.

    _WinAPI_CopyFileEx
    _WinAPI_MoveFileEx
    _WinAPI_ShellGetFileInfo
    _WinAPI_StructToArray

  • Удалена функция _WinAPI_ExtractAssociatedIcon(), вместо нее испольуйте _WinAPI_ShellExtractAssociatedIcon().
  • Следующие функции теперь возвращают в @extended флаге код COM ошибки, аналогично _WinAPI_Reg... функциям. Для всех остальных, можно использовать _WinAPI_GetLastError().

    _WinAPI_AssocGetPerceivedType
    _WinAPI_AssocQueryString
    _WinAPI_CreateStreamOnHGlobal
    _WinAPI_GetHGlobalFromStream
    _WinAPI_GetThemeColor
    _WinAPI_ShellEmptyRecycleBin
    _WinAPI_ShellGetSpecialFolderLocation
    _WinAPI_ShellILCreateFromPath
    _WinAPI_ShellQueryRecycleBin

  • Следующие функции заменены на их Unicode версии (заголовок сохранен).

    _WinAPI_CreateSemaphore
    _WinAPI_OpenSemaphore
    _WinAPI_EnumResourceLanguages
    _WinAPI_EnumResourceNames
    _WinAPI_EnumResourceTypes
    _WinAPI_FindResource
    _WinAPI_FindResourceEx

  • Добавлены следующие функции.

    _WinAPI_AdjustWindowRectEx
    _WinAPI_AssocGetPerceivedType
    _WinAPI_AddMRUString
    _WinAPI_BroadcastSystemMessage
    _WinAPI_BrowseForFolderDlg
    _WinAPI_CoTaskMemAlloc
    _WinAPI_CoTaskMemFree
    _WinAPI_CoTaskMemRealloc
    _WinAPI_CreateMRUList
    _WinAPI_EnumMRUList
    _WinAPI_FreeMRUList
    _WinAPI_GetBinaryType
    _WinAPI_GetKeyboardType
    _WinAPI_GetSystemInfo
    _WinAPI_GetSystemWow64Directory
    _WinAPI_GetTextFace
    _WinAPI_IsProcessInJob
    _WinAPI_SendMessageTimeout
    _WinAPI_ShellExtractAssociatedIcon
    _WinAPI_ShellGetPathFromIDList
    _WinAPI_ShellGetSpecialFolderLocation
    _WinAPI_ShellILCreateFromPath
    _WinAPI_ShowShareFolderUI
    _WinAPI_StrLen
    _WinAPI_UpdateLayeredWindowEx

  • Добавлены примеры к вышеперечисленным функциям.
  • Много внутренних изменений, в основном связанных с типами данных для работы на 64-битных системах.
  • Обновлена документация.
 
Автор
Yashied

Yashied

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

Список изменений:
  • Изменен заголовок у следующих функций.

    _WinAPI_DrawBitmap
    _WinAPI_GetThemeColor

  • Добавлены следующие структуры.

    $tagBITMAPV4HEADER
    $tagBITMAPV5HEADER

  • Добавлены следующие функции.

    _WinAPI_CloseThemeData
    _WinAPI_CreateCaret
    _WinAPI_DestroyCaret
    _WinAPI_DrawThemeBackground
    _WinAPI_DrawThemeParentBackground
    _WinAPI_DrawThemeText
    _WinAPI_GetCaretBlinkTime
    _WinAPI_GetCaretPos
    _WinAPI_GetCurrentThemeName
    _WinAPI_GetThemeDocumentationProperty
    _WinAPI_GetThemeFont
    _WinAPI_GetThemeInt
    _WinAPI_GetThemeMargins
    _WinAPI_GetThemePartSize
    _WinAPI_GetThemePosition
    _WinAPI_GetThemeRect
    _WinAPI_GetUpdateRect
    _WinAPI_GetUpdateRgn
    _WinAPI_HideCaret
    _WinAPI_IsThemeBackgroundPartiallyTransparent
    _WinAPI_IsThemePartDefined
    _WinAPI_OpenThemeData
    _WinAPI_PlaySound
    _WinAPI_SetCaretBlinkTime
    _WinAPI_SetCaretPos
    _WinAPI_ShellChangeNotifyDeregister
    _WinAPI_ShellChangeNotifyRegister
    _WinAPI_ShowCaret

  • Добавлены примеры к вышеперечисленным функциям.
  • Переписаны некоторые примеры для совместимости с Windows Vista / 7.
  • Обновлена документация.
 
Автор
Yashied

Yashied

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

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

    _WinAPI_ShareFolderDlg
    _WinAPI_WinHelp

  • Измеена функция _WinAPI_SetKeyboardLayout(). Теперь, если указанной раскладки клавиатуры в системе не загружено, функция возвращает ошибку.
  • Переписана (с изменением заголовка, см. документацию) функция _WinAPI_StructToArray().
  • Добавлены следующие функции.

    _WinAPI_ActivateKeyboardLayout
    _WinAPI_CommandLineToArgv
    _WinAPI_DeviceIoControl
    _WinAPI_GetCurrentHwProfile
    _WinAPI_GetPerformanceInfo
    _WinAPI_GetPosFromRect
    _WinAPI_GetProfilesDirectory
    _WinAPI_GetVersion
    _WinAPI_IsLoadKBLayout
    _WinAPI_IsWow64Process
    _WinAPI_LoadKeyboardLayout
    _WinAPI_MessageBoxCheck
    _WinAPI_PatBlt
    _WinAPI_ShellAddToRecentDocs
    _WinAPI_ShellObjectProperties
    _WinAPI_ShutdownDlg
    _WinAPI_UnloadKeyboardLayout

    *Windows Vista и выше

    _WinAPI_DrawThemeTextEx
    _WinAPI_DwmGetColorizationColor
    _WinAPI_DwmGetWindowAttribute
    _WinAPI_DwmEnableBlurBehindWindow
    _WinAPI_DwmEnableComposition
    _WinAPI_DwmExtendFrameIntoClientArea
    _WinAPI_DwmIsCompositionEnabled
    _WinAPI_DwmQueryThumbnailSourceSize
    _WinAPI_DwmRegisterThumbnail
    _WinAPI_DwmSetWindowAttribute
    _WinAPI_DwmUnregisterThumbnail
    _WinAPI_DwmUpdateThumbnailProperties
    _WinAPI_GetTickCount64
    _WinAPI_LoadIconWithScaleDown
    _WinAPI_ShellGetKnownFolderPath
    _WinAPI_ShellGetStockIconInfo
    _WinAPI_ShellOpenWithDlg

  • Добавлены примеры к вышеперечисленным функциям.
  • Изменены некоторые примеры.
  • Несколько внутренних изменений, связанных с типами данных для работы на 64-битных системах.
  • Обновлена документация.
 
Автор
Yashied

Yashied

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

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

akoulev

Новичок
Сообщения
169
Репутация
2
Вопрос по размещениию файлов из .zip-файла WinAPIEx_2.6.zip.
AutoIt у меня (да, полагаю, и у всех) установлен в директорию C:\Program Files\AutoIt3\
1) В какую директорию надо положить файл au3.user.calltips.api? (Просится, вроде как, в C:\Program Files\AutoIt3\SciTE\API - но могу и ошибиться)
2) В какую директорию надо положить файл au3.userudfs.properties? (Просится, вроде как, в C:\Program Files\AutoIt3\SciTE - но могу и ошибиться)
3) В какую директорию надо положить файл WinAPIEx.au3? (Просится, вроде как, в Include - но могу и ошибиться)
4) В какую директорию надо положить файл WinAPIEx.chm? (Просится, вроде как, в C:\Program Files\AutoIt3\ - но могу и ошибиться)
5) В какую директорию надо развернуть файлы из каталога Examples? ((Просится, вроде как, дописать оптом в Examples - но могу и ошибиться)
6) И, наверное, главный вопрос: в какую директорию надо развернуть файлы из каталога Extras? (этот каталог -в архиве- вложен в Examples; а в C:\Program Files\AutoIt3\ каталоги Examples и Extras лежат на одном уровне.).

Hint: возможно, стоит сделать инсталлятор? Если Вам некогда - готов сделать я (есть небольшой, но реальный опыт), после получения ответа на эти 6 вопросов. Да, и куда его (новосозданный инсталлятор) потом выложить?
 
Автор
Yashied

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
1. C:\Program Files\AutoIt3\SciTE\api\.
2. C:\Program Files\AutoIt3\SciTE\Properties\.
3. C:\Program Files\AutoIt3\Include\.
4. Куда угодно, справка не связана с AutoIt. Рекомендую в C:\Program Files\AutoIt3\.
5. Тем более не связаны ни с AutoIt, ни со справкой. В самой справке уже присутствуют эти примеры и их вообще можно не устанавливать. Но я рекомендую положить содержимое папки Examples в C:\Program Files\AutoIt3\Examples\WinAPIEx\.
6. Эта папка должна находиться непосредственно в папке с примерами или в той, откуда они запускаются. Во всех примерах, где это используется, ссылка на папку Extras прописана как @ScriptDir & "\Extras\...".

akoulev сказал(а):
...возможно, стоит сделать инсталлятор?

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

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
OffTopic:
а я вот не вижу ничего крамольного в инсталляторе. главное знать что он делает ;D
 

akoulev

Новичок
Сообщения
169
Репутация
2
По поводу вопроса №2: В какую дир-ию надо положить файл au3.userudfs.properties?

Yashied сказал(а):
2. C:\Program Files\AutoIt3\SciTE\Properties\.
А точно ли, что именно туда? Дело в том, что в C:\Program Files\AutoIt3\SciTE нет подкаталога "Properties"; зато в C:\Program Files\AutoIt3\SciTE лежит файл au3.keywords.properties - не рядышком ли с ним и должен лежать au3.userudfs.properties?
Версия AutoIt: 3.3.6.1


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

Kaster сказал(а):
OffTopic:
а я вот не вижу ничего крамольного в инсталляторе. главное знать что он делает ;D
Ну, тут, по-моему, так: инсталлятор раскидывает файлы по "расчётным" местам ибн каталогам. Предварительно убедившись, что существует таргет-директория C:\Program Files\AutoIt3\. Нужно ли ещё что-то?
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
akoulev [?]
Ну, тут, по-моему, так
я имел в виду про инсталяторы вообще, а не про какой-то конкретный. просто некоторые могут такого наворотить, что мама не горюй

Нужно ли ещё что-то?
опять же, если говорить про них вообще, то нужно еще куча всего
1. возможность изменять/добавлять значения в реестре
2. распаковывать файлы исходя из определенных условий типа локализация, версии необходимых библиотек
3. возможность выбора опций
4. возможность деинсталляции
5. и т.д. и т.д. и т.д.
 
Верх