Меню последних файлов AutoIt

У меня есть выбор пользователя, который установлен как последние файлы:

$loc = FileSelectFolder("Choose file location...", "\")
$file = FileOpenDialog("Choose file...", $loc, "Jar Files (*.jar*)")
GUICtrlCreateMenuItem($file, $recentfilesmenu)

Я пытался получить информацию от него через:

IniWrite("C:\Config.ini", "Recent", "Recent", GUICtrlRead($recentfilesmenu))

Но это дает мне только число 68. Где моя ошибка?


person EpicKnarvik97    schedule 01.08.2013    source источник


Ответы (1)


Число 68 — это controlID меню.

Вам нужно использовать _GUICtrlMenu_GetItemText, чтобы прочитать текст пункта меню:

#include <GUIConstantsEx.au3>
#include <GuiMenu.au3>

$hGui = GUICreate('Read Menu Item', 400, 300)
$mnuFile = GUICtrlCreateMenu('&File')
$mnuFileExit = GUICtrlCreateMenuItem('Exit', $mnuFile)
GUISetState()

; read the text of the menu item
$hMenu = _GUICtrlMenu_GetMenu($hGui)
$sText = _GUICtrlMenu_GetItemText($hMenu, $mnuFileExit, False)
MsgBox(0, 'Menu item text', $sText)

While 1
    $msg = GUIGetMsg()
    If $msg = $GUI_EVENT_CLOSE Or $msg = $mnuFileExit Then ExitLoop
WEnd

Это выводит: Выход


Обновление

Чтобы принять предложение Мэтта, вы также можете использовать расширенный параметр для GUICtrlRead, который намного короче:

IniWrite("C:\Config.ini", "Recent", "Recent", GUICtrlRead($recentfilesmenu, 1))
person Andreas    schedule 02.08.2013
comment
@mrt Спасибо. Я заставил его работать. Мне просто интересно. Как мне заставить его добавить прошлый элемент в список. Вместо того, чтобы показывать текущий элемент в списке, как я могу получить элемент, который я выбрал ранее. Может быть, добавить, чтобы он мог отображать несколько элементов и не перезаписывать, если элемент уже существует? - person EpicKnarvik97; 02.08.2013
comment
@EpicKnarvik97, есть много примеров, когда люди делали это раньше. Обычно путем установки ограничения (скажем, 9 элементов) и сохранения их в массиве. Ищите на форумах больше. - person Matt; 02.08.2013