Что нового

Работа с MRU (Most Recently Used) списками

Yashied

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

Категория: Система / Реестр

Описание: Если Вы хоть раз заглядывали в реест Windows, то скорее всего видели записи подобные тем, что на представленном ниже скриншоте. Собственно это и есть MRU списки. Данная библиотека позволяет загружать такие списки из реестра, работать с ними и записывать обратно в реестр. Примерная последовательность действий показана в примерах ниже.

Пример 1:
Код:
#Include <MRU.au3>

Global Const $RegKey = 'HKLM\SOFTWARE\Test\MRU'

Global $Mru, $Array

$Mru = _MRU_Create()

_MRU_AddItem($Mru, 'Item 4')
_MRU_AddItem($Mru, 'Item 3')
_MRU_AddItem($Mru, 'Item 2')
_MRU_AddItem($Mru, 'Item 1')
MsgBox(0, '', _MRU_GetAsString($Mru, '|'))
_MRU_SetSize($Mru, 2)
$Array = _MRU_GetAsArray($Mru)
For $i = 1 To $Array[0]
    MsgBox(0, '', $Array[$i])
Next
_MRU_RegWrite($Mru, $RegKey)

_MRU_Release($Mru)

Пример 2:
Код:
#Include <GUIComboBox.au3>
#Include <GUIConstantsEx.au3>
#Include <WindowsConstants.au3>
#Include <MRU.au3>

Global Const $RegKey = 'HKLM\SOFTWARE\Test\MRU'

Global $ButtonOk, $Combo, $Msg, $Mru

$Mru = _MRU_Create($RegKey)

GUICreate('Test', 400, 88)
$Combo = GUICtrlCreateCombo('', 20, 20, 360, 21)
GUICtrlSetData(-1, _MRU_GetAsString($Mru, '|'), _MRU_GetItem($Mru, 1))
$ButtonOk = GUICtrlCreateButton('OK', 165, 58, 70, 21)
GUISetState()

GUIRegisterMsg($WM_COMMAND, 'WM_COMMAND')

Do
    $Msg = GUIGetMsg()
    If $Msg = $ButtonOk Then
        _MRU_AddItem($Mru, GUICtrlRead($Combo))
        _MRU_RegWrite($Mru)
    EndIf
Until ($Msg = $ButtonOk) Or ($Msg = $GUI_EVENT_CLOSE)

_MRU_Release($Mru)

Func WM_COMMAND($hWnd, $iMsg, $wParam, $lParam)
    Switch BitAND($wParam, 0xFFFF)
        Case $Combo
            Switch BitShift($wParam, 16)
                Case $CBN_EDITCHANGE
                    _GUICtrlComboBox_AutoComplete($Combo)
            EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_COMMAND

Скриншот:

MRU.png

Источник: MRU UDF (оффициальный форум)
Автор: Yashied
 
Верх