Что нового

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

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Yashied,
Большое спасибо за пример. Класс!!!
 

ynbIpb

Скриптер
Сообщения
399
Репутация
110
Yashied, совместима ли текущая версия WinAPIEx 2.1 с 3.3.4.0 ?
На первый взгляд вроде норм, но проводилось ли тестирование?
 
Автор
Yashied

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Не тестировал, но должна полностью работать. 3.3.4.0 (3.3.5.0) с точки зрения UDF (WinAPI) ничем не отличаются от 3.3.2.0.
 

asdf8

Скриптер
Сообщения
564
Репутация
152
Хорошо бы добавить функцию "SHChangeNotify", для обновления оболочки, после разных манипуляций над ней.
 
Автор
Yashied

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
asdf8 сказал(а):
Хорошо бы добавить функцию "SHChangeNotify", для обновления оболочки, после разных манипуляций над ней.

Я хотел включить эту функцию в последнюю сборку, но ... работает она, мягко говоря, не очень. Поэтому отложил ее до лучших времен. В следующей версии WinAPIEx возможно будет присутствовать эта функция. Я предлагаю Вам написать небольшой пример для нее.
 

asdf8

Скриптер
Сообщения
564
Репутация
152
Небольшой пример:

Код:
; for X86
Opt('MustDeclareVars', 1)

Global Const $SHCNE_ASSOCCHANGED = 0x8000000
Global Const $SHCNF_FLUSH = 0x1000
Global Const $SHCNF_IDLIST = 0x0

Global $file, $title

$file = FileOpen(@TempDir & "\test\test.exmp", 10)
FileClose($file)
ShellExecute(@TempDir & "\test")
Sleep(4000)
$title = WinGetTitle("[active]")
RegWrite("HKEY_CLASSES_ROOT\.exmp", "", "REG_SZ", "exmpfile")
RegWrite("HKEY_CLASSES_ROOT\exmpfile\DefaultIcon", "", "REG_SZ", "shell32.dll,27")

_WinAPI_SHChangeNotify($SHCNE_ASSOCCHANGED, BitOR($SHCNF_IDLIST, $SHCNF_FLUSH)); update shell icons

Sleep(4000)
RegDelete("HKEY_CLASSES_ROOT\.exmp")
RegDelete("HKEY_CLASSES_ROOT\exmpfile")

_WinAPI_SHChangeNotify($SHCNE_ASSOCCHANGED, BitOR($SHCNF_IDLIST, $SHCNF_FLUSH)); update shell icons

Sleep(2000)
If WinExists($title) Then WinClose($title)
DirRemove(@TempDir & "\test", 1)

Func _WinAPI_SHChangeNotify($wEventId, $uFlags, $dwItem1 = 0, $dwItem2 = 0)
 	DllCall("shell32.dll", "none", "SHChangeNotify", _
			"long", $wEventId, _
			"uint", $uFlags, _
			"ptr", $dwItem1, _
			"ptr", $dwItem2 _
			)
EndFunc
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
asdf8 [?]
Небольшой пример
Хороший пример, но желательно добавить и другие константы в список, которые возможно использовать с этой функцией.
 
Автор
Yashied

Yashied

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

Действительно хороший пример, функция будет добавлена в следующей версии.

CreatoR

Я так же добавлю все необходимые константы + описание.
 
Автор
Yashied

Yashied

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

Yashied

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

_WinAPI_EnumChildProcess
_WinAPI_EnumDeviceDrivers
_WinAPI_GetDeviceDriverBaseName
_WinAPI_GetDeviceDriverFileName
_WinAPI_GetParentProcess
_WinAPI_GetProcessName
_WinAPI_LockFile
_WinAPI_PathFindExtension
_WinAPI_PathFindFileName
_WinAPI_PathFindNextComponent
_WinAPI_PathGetArgs
_WinAPI_PathGetCharType
_WinAPI_PathGetDriveNumber
_WinAPI_PathIsExe
_WinAPI_PathIsFileSpec
_WinAPI_PathIsRelative
_WinAPI_PathIsSameRoot
_WinAPI_PathRenameExtension
_WinAPI_PathUnExpandEnvStrings
_WinAPI_PrintWindow
_WinAPI_QueryPerformanceCounter
_WinAPI_QueryPerformanceFrequency
_WinAPI_ShellChangeNotify (спасибо asdf8)
_WinAPI_ShellEmptyRecycleBin
_WinAPI_ShellFileOperation
_WinAPI_ShellGetSettings
_WinAPI_ShellQueryRecycleBin
_WinAPI_ShellSetSettings
_WinAPI_UnlockFile

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

Yashied

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

Функции _WinAPI_GetProcessCreationTime() и _WinAPI_RegQueryLastWriteTime() теперь возвращают $tagFILETIME структуру вместо $tagSYSTEMTIME структуры. Это может быть полезно при сравнении дат и т.д.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Yashied
Функция _WinAPI_EnumSystemLocales возвращает все распознанные в системе раскладки, а можно ли получить только те, что используются в системе (в списке панели клавиатуры)?
 
Автор
Yashied

Yashied

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

Код:
#Include <Array.au3>
#Include <WinAPIEx.au3>

Global $aList = _WinAPI_GetKeyboardLayoutList()

If IsArray($aList) Then
	_ArrayDisplay($aList, '_WinAPI_GetKeyboardLayoutList')
EndIf


ID языков (LCID):

0x0436 - Afrikaans
0x041C - Albanian
0x0401 - Arabic
0x1401 - Arabic Algeria
0x3C01 - Arabic Bahrain
0x0C01 - Arabic Egypt
0x0801 - Arabic Iraq
0x2C01 - Arabic Jordan
0x3401 - Arabic Kuwait
0x3001 - Arabic Lebanon
0x1001 - Arabic Libya
0x1801 - Arabic Morocco
0x2001 - Arabic Oman
0x4001 - Arabic Qatar
0x0401 - Arabic Saudi Arabia
0x2801 - Arabic Syria
0x1C01 - Arabic Tunisia
0x3801 - Arabic U.A.E
0x2401 - Arabic Yemen
0x042B - Armenian
0x044D - Assamese
0x082C - Azeri Cyrillic
0x042C - Azeri Latin
0x042D - Basque
0x0813 - Belgian Dutch
0x080C - Belgian French
0x0445 - Bengali
0x0416 - Portuguese (Brazil)
0x0402 - Bulgarian
0x0455 - Burmese
0x0423 - Byelorussian (Belarusian)
0x0403 - Catalan
0x0C04 - Chinese Hong Kong SAR
0x1404 - Chinese Macau SAR
0x0804 - Chinese Simplified
0x1004 - Chinese Singapore
0x0404 - Chinese Traditional
0x041A - Croatian
0x0405 - Czech
0x0406 - Danish
0x0413 - Dutch
0x0C09 - English Australia
0x2809 - English Belize
0x1009 - English Canadian
0x2409 - English Caribbean
0x1813 - English Ireland
0x2009 - English Jamaica
0x1409 - English New Zealand
0x3409 - English Philippines
0x1C09 - English South Africa
0x2C09 - English Trinidad
0x0809 - English U.K.
0x0409 - English U.S.
0x3009 - English Zimbabwe
0x0425 - Estonian
0x0438 - Faeroese
0x0429 - Farsi
0x040B - Finnish
0x040C - French
0x2C0C - French Cameroon
0x0C0C - French Canadian
0x300C - French Cote d'Ivoire
0x140C - French Luxembourg
0x340C - French Mali
0x180C - French Monaco
0x200C - French Reunion
0x280C - French Senegal
0x1C0C - French West Indies
0x240C - French Congo (DRC)
0x0462 - Frisian Netherlands
0x083C - Gaelic Ireland
0x043C - Gaelic Scotland
0x0456 - Galician
0x0437 - Georgian
0x0407 - German
0x0C07 - German Austria
0x1407 - German Liechtenstein
0x1007 - German Luxembourg
0x0408 - Greek
0x0447 - Gujarati
0x040D - Hebrew
0x0439 - Hindi
0x040E - Hungarian
0x040F - Icelandic
0x0421 - Indonesian
0x0410 - Italian
0x0411 - Japanese
0x044B - Kannada
0x0460 - Kashmiri
0x043F - Kazakh
0x0453 - Khmer
0x0440 - Kirghiz
0x0457 - Konkani
0x0412 - Korean
0x0454 - Lao
0x0426 - Latvian
0x0427 - Lithuanian
0x042F - FYRO Macedonian
0x044C - Malayalam
0x083E - Malay Brunei Darussalam
0x043E - Malaysian
0x043A - Maltese
0x0458 - Manipuri
0x044E - Marathi
0x0450 - Mongolian
0x0461 - Nepali
0x0414 - Norwegian Bokmol
0x0814 - Norwegian Nynorsk
0x0448 - Oriya
0x0415 - Polish
0x0816 - Portuguese
0x0446 - Punjabi
0x0417 - Rhaeto-Romanic
0x0418 - Romanian
0x0818 - Romanian Moldova
0x0419 - Russian
0x0819 - Russian Moldova
0x043B - Sami Lappish
0x044F - Sanskrit
0x0C1A - Serbian Cyrillic
0x081A - Serbian Latin
0x0430 - Sesotho
0x0459 - Sindhi
0x041B - Slovak
0x0424 - Slovenian
0x042E - Sorbian
0x040A - Spanish (Traditional)
0x2C0A - Spanish Argentina
0x400A - Spanish Bolivia
0x340A - Spanish Chile
0x240A - Spanish Colombia
0x140A - Spanish Costa Rica
0x1C0A - Spanish Dominican Republic
0x300A - Spanish Ecuador
0x440A - Spanish El Salvador
0x100A - Spanish Guatemala
0x480A - Spanish Honduras
0x4C0A - Spanish Nicaragua
0x180A - Spanish Panama
0x3C0A - Spanish Paraguay
0x280A - Spanish Peru
0x500A - Spanish Puerto Rico
0x0C0A - Spanish Spain (Modern Sort)
0x380A - Spanish Uruguay
0x200A - Spanish Venezuela
0x0430 - Sutu
0x0441 - Swahili
0x041D - Swedish
0x081D - Swedish Finland
0x100C - Swiss French
0x0807 - Swiss German
0x0810 - Swiss Italian
0x0428 - Tajik
0x0449 - Tamil
0x0444 - Tatar
0x044A - Telugu
0x041E - Thai
0x0451 - Tibetan
0x0431 - Tsonga
0x0432 - Tswana
0x041F - Turkish
0x0442 - Turkmen
0x0422 - Ukrainian
0x0420 - Urdu
0x0843 - Uzbek Cyrillic
0x0443 - Uzbek Latin
0x0433 - Venda
0x042A - Vietnamese
0x0452 - Welsh
0x0434 - Xhosa
0x0435 - Zulu
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Yashied [?]
Раскладки возвращает другая функция
Тоже не то, это полный список, а мне нужны только используемые. У меня их две к примеру, русская и английская, как это получить?
 
Автор
Yashied

Yashied

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

???

Это именно то, о чем ты спрашивал. У меня тоже только русская и английская, и _WinAPI_GetKeyboardLayoutList() возвращает только две эти раскладки. У тебе разве по другому?
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Yashied [?]
У тебе разве по другому?
Ааааааа! :laugh: вот это дела - я до этого эксперементировал с этим делом, и использовал «_LoadKeyboardLayout» на подобном списке от «_EnumSystemLocales», так он мне в системе добавил эти раскладки... спасибо, это то что нужно.
 
Автор
Yashied

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Locales, это то, что находится в списке, что в Control Panel => Regional and Language Options => Regional Options.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Я понял, спасибо.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Yashied [?]
Действительно хороший пример, функция будет добавлена в следующей версии
При каких обстоятельствах данная функция может не срабатывать? Перестало работать и всё, после чего именно сказать трудно, в последнее время устанавливал разные программы и настраивал уже не помню что :wacko: (система свежая).
 
Автор
Yashied

Yashied

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