- Сообщения
- 5,379
- Репутация
- 2,724
AutoIt: 3.3.0.0
Версия: Prerelease
Категория: WinAPI
Описание: Возвращает информацию из реестра, связанную с исходной строкой ($sAssoc). Тип возвращаемой информации зависит от параметра $iType ($ASSOCSTR_...). Например, с помощью этой функции можно получить иконку (путь к файлу, содержащего иконку и индекс), зарегистрированную для определенного типа (расширения) файла, и многое другое. Эта функция будет включена в библиотеку WinAPIEx.au3 при следующем обновлении (версия 1.79).
Код: Пример + Функция
Скриншот:
Источник: Yashied
Версия: Prerelease
Категория: WinAPI
Описание: Возвращает информацию из реестра, связанную с исходной строкой ($sAssoc). Тип возвращаемой информации зависит от параметра $iType ($ASSOCSTR_...). Например, с помощью этой функции можно получить иконку (путь к файлу, содержащего иконку и индекс), зарегистрированную для определенного типа (расширения) файла, и многое другое. Эта функция будет включена в библиотеку WinAPIEx.au3 при следующем обновлении (версия 1.79).
Код: Пример + Функция
Код:
Global Const $ASSOCSTR_COMMAND = 1
Global Const $ASSOCSTR_EXECUTABLE = 2
Global Const $ASSOCSTR_FRIENDLYDOCNAME = 3
Global Const $ASSOCSTR_FRIENDLYAPPNAME = 4
Global Const $ASSOCSTR_NOOPEN = 5
Global Const $ASSOCSTR_SHELLNEWVALUE = 6
Global Const $ASSOCSTR_DDECOMMAND = 7
Global Const $ASSOCSTR_DDEIFEXEC = 8
Global Const $ASSOCSTR_DDEAPPLICATION = 9
Global Const $ASSOCSTR_DDETOPIC = 10
Global Const $ASSOCSTR_INFOTIP = 11
Global Const $ASSOCSTR_QUICKTIP = 12
Global Const $ASSOCSTR_TILEINFO = 13
Global Const $ASSOCSTR_CONTENTTYPE = 14
Global Const $ASSOCSTR_DEFAULTICON = 15
Global Const $ASSOCSTR_SHELLEXTENSION = 16
Global Const $ASSOCF_INIT_NOREMAPCLSID = 0x00000001
Global Const $ASSOCF_INIT_BYEXENAME = 0x00000002
Global Const $ASSOCF_OPEN_BYEXENAME = 0x00000002
Global Const $ASSOCF_INIT_DEFAULTTOSTAR = 0x00000004
Global Const $ASSOCF_INIT_DEFAULTTOFOLDER = 0x00000008
Global Const $ASSOCF_NOUSERSETTINGS = 0x00000010
Global Const $ASSOCF_NOTRUNCATE = 0x00000020
Global Const $ASSOCF_VERIFY = 0x00000040
Global Const $ASSOCF_REMAPRUNDLL = 0x00000080
Global Const $ASSOCF_NOFIXUPS = 0x00000100
Global Const $ASSOCF_IGNOREBASECLASS = 0x00000200
Global Const $ASSOCF_INIT_IGNOREUNKNOWN = 0x00000400
; #FUNCTION# ====================================================================================================================
; Name...........: _WinAPI_AssocQueryString
; Description....: Searches for and retrieves a file or protocol association-related string from the registry.
; Syntax.........: _WinAPI_AssocQueryString ( $sAssoc, $iType [, $iFlags [, $sExtra]] )
; Parameters.....: $sAssoc - The string that is used to determine the root key. The following four types of strings can be used.
;
; The file name extension, such as .txt.
; The class identifier (CLSID) GUID in the standard "{GUID}" format.
; The application's ProgID, such as Word.Document.8.
; The name of an application's .exe file. The $ASSOCF_OPEN_BYEXENAME flag must be set.
;
; $iType - The value that specifies the type of string that is to be returned. This parameter can be one of the
; following values.
;
; $ASSOCSTR_COMMAND
; $ASSOCSTR_EXECUTABLE
; $ASSOCSTR_FRIENDLYDOCNAME
; $ASSOCSTR_FRIENDLYAPPNAME
; $ASSOCSTR_NOOPEN
; $ASSOCSTR_SHELLNEWVALUE
; $ASSOCSTR_DDECOMMAND
; $ASSOCSTR_DDEIFEXEC
; $ASSOCSTR_DDEAPPLICATION
; $ASSOCSTR_DDETOPIC
; $ASSOCSTR_INFOTIP
; $ASSOCSTR_QUICKTIP
; $ASSOCSTR_TILEINFO
; $ASSOCSTR_CONTENTTYPE
; $ASSOCSTR_DEFAULTICON
; $ASSOCSTR_SHELLEXTENSION
;
; $iFlags - The flags that can be used to control the search. It can be any combination of the following
; values, except that only one $ASSOCF_INIT_... value can be included.
;
; $ASSOCF_INIT_NOREMAPCLSID
; $ASSOCF_INIT_BYEXENAME
; $ASSOCF_OPEN_BYEXENAME
; $ASSOCF_INIT_DEFAULTTOSTAR
; $ASSOCF_INIT_DEFAULTTOFOLDER
; $ASSOCF_NOUSERSETTINGS
; $ASSOCF_NOTRUNCATE
; $ASSOCF_VERIFY
; $ASSOCF_REMAPRUNDLL
; $ASSOCF_NOFIXUPS
; $ASSOCF_IGNOREBASECLASS
; $ASSOCF_INIT_IGNOREUNKNOWN
;
; $sExtra - The optional string with additional information about the location of the string. It is typically
; set to a Shell verb such as open.
; Return values..: Success - The string that contains the requested ($ASSOCSTR_...) information.
; Failure - Empty string and sets the @error flag to non-zero.
; Author.........: Yashied
; Modified.......:
; Remarks........: None
; Related........:
; Link...........: @@MsdnLink@@ AssocQueryString
; Example........: Yes
; ===============================================================================================================================
Func _WinAPI_AssocQueryString($sAssoc, $iType, $iFlags = 0, $sExtra = '')
Local $TypeOfExtra = 'wstr'
If StringStripWS($sExtra, 3) = '' Then
$TypeOfExtra = 'ptr'
$sExtra = 0
EndIf
Local $Ret
$Ret = DllCall('shlwapi.dll', 'int', 'AssocQueryStringW', 'dword', $iFlags, 'dword', $iType, 'wstr', $sAssoc, $TypeOfExtra, $sExtra, 'ptr', 0, 'dword*', 0)
If (@error) Or (Not ($Ret[0] = 1)) Then
Return SetError(1, 0, '')
EndIf
Local $tData = DllStructCreate('wchar[' & $Ret[6] & ']')
$Ret = DllCall('shlwapi.dll', 'int', 'AssocQueryStringW', 'dword', $iFlags, 'dword', $iType, 'wstr', $sAssoc, $TypeOfExtra, $sExtra, 'ptr', DllStructGetPtr($tData), 'dword*', $Ret[6])
If (@error) Or (Not ($Ret[0] = 0)) Then
Return SetError(1, 0, '')
EndIf
Return DllStructGetData($tData, 1)
EndFunc ;==>_WinAPI_AssocQueryString
#Region Example
Global $Ext = '.au3'
ConsoleWrite('(' & $Ext & ')' & @CR)
ConsoleWrite('--------------------' & @CR)
ConsoleWrite('Type: ' & _WinAPI_AssocQueryString($Ext, $ASSOCSTR_FRIENDLYDOCNAME) & @CR)
ConsoleWrite('Command: ' & _WinAPI_AssocQueryString($Ext, $ASSOCSTR_COMMAND) & @CR)
ConsoleWrite('Executable: ' & _WinAPI_AssocQueryString($Ext, $ASSOCSTR_EXECUTABLE) & @CR)
ConsoleWrite('Icon: ' & _WinAPI_AssocQueryString($Ext, $ASSOCSTR_DEFAULTICON) & @CR)
#EndRegion Example
Скриншот:
Источник: Yashied