【问题标题】:AutoIt recent files menuAutoIt 最近的文件菜单
【发布时间】:2013-08-01 23:40:41
【问题描述】:

我有一个设置为最近文件的用户选择:

$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 号。我的错误在哪里?

【问题讨论】:

    标签: autoit


    【解决方案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
    

    这输出:退出


    更新

    要采纳 Matt 的建议,您还可以使用更短的 GUICtrlRead 的高级参数:

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

    【讨论】:

    • @mrt 谢谢。我让它工作。我只是好奇。我应该如何让它将过去的项目添加到列表中。如何获取我之前选择的项目,而不是在列表中显示当前项目。也许添加它可以显示多个项目并且如果项目已经存在则不会覆盖?
    • @EpicKnarvik97,有很多例子表明人们以前这样做过。通常通过设置一个限制(比如 9 个项目)并将它们存储在一个数组中。搜索论坛了解更多信息。
    猜你喜欢
    • 2016-12-31
    • 1970-01-01
    • 1970-01-01
    • 2012-05-14
    • 2014-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多