Using MSAgent to Scan the Start Menu 选择自 wm_ni 的 Blog

Using MSAgent to Scan the Start Menu 选择自 wm_ni 的 BlogNotethiscodewillignoreduplicateshortcuts.ForexampleIhave4or5shortcutsinmyStartMenuthatarenamed”Readme.txt.”Onlythefirstinstanceofthesewillgetaddedtothecommandsallot

大家好,又见面了,我是你们的朋友全栈君。

Note this code will ignore duplicate shortcuts. For example I have 4 or 5 shortcuts in my Start Menu that are named “Readme.txt.” Only the first instance of these will get added to the commands all others will produce an error and will be ignored.

Add the following objects to your project:

Object Type   Object Name
New Module      Doesn’t matter
New Form       frmMain
Function        SubMain() – The project will need to start up here.
Microsoft Agent Control  Agent

 

Add the following to a new code module:
Option Explicit

Public Declare Function ShellExecute Lib “shell32.dll” _
               Alias “ShellExecuteA” _
               (ByVal hwnd As Long, _
               ByVal lpOperation As String, _
               ByVal lpFile As String, _
               ByVal lpParameters As String, _
               ByVal lpDirectory As String, _
               ByVal nShowCmd As Long) As Long

Public a As IAgentCtlCharacter
Public Request As Object
Public fso As New FileSystemObject

Public Type ShortCut
    Name As String * 80
    Path As String * 150
End Type

Public ShortCuts() As ShortCut

Sub Main()
    Load frmMain
    Dim fldr As Scripting.Folder
    Dim wfldr As Scripting.Folder
    ReDim ShortCuts(0)
   
    ‘*************************************************
    ‘Use default Character by not including the path
    ‘*************************************************
    frmMain.Agent.Characters.Load “Agent”
    Set a = frmMain.Agent.Characters(“Agent”)
       
    ‘*************************************************
    ‘Find out the path of the windows directory
    ‘*************************************************
    Set wfldr = fso.GetSpecialFolder(WindowsFolder)
   
    ‘*************************************************
    ‘Get Start Menu Shortcuts
    ‘*************************************************
    Set fldr = fso.GetFolder(wfldr.Path & “/Start Menu”)
    Call AddFolderCommands(fldr, “*.lnk”)
   
    ‘*************************************************
    ‘Get Desktop Shortcuts
    ‘*************************************************
    Set fldr = fso.GetFolder(wfldr.Path & “/Start Menu”)
    Call AddFolderCommands(fldr, “*.lnk”)
   
    ‘*************************************************
    ‘Get Favorites Shortcuts
    ‘*************************************************
    Set fldr = fso.GetFolder(wfldr.Path & “/Start Menu”)
    Call AddFolderCommands(fldr, “*.url”)
   
    a.Show
End Sub

Public Sub AddFolderCommands(rfldr As Scripting.Folder, _
                             lsFileMask As String)
    Dim f As Scripting.File
    Dim lsName As String
    Dim x As Long
    Dim fldr As Scripting.Folder
   
    If fso.FolderExists(rfldr.Path) Then
   
        ‘*************************************************
        ‘Check each file to see if it fits the mask
        ‘*************************************************
        For Each f In rfldr.Files
            If f.Name Like lsFileMask Then
                x = InStrRev(f.Name, “.”, , vbTextCompare)
                If x <> 0 Then
                    lsName = Trim$(Left$(f.Name, x – 1))
                Else
                    lsName = Trim$(f.Name)
                End If
               
                Call AddCommand(lsName, Trim$(f.Path))
            End If
        Next
       
        ‘*************************************************
        ‘Do this for each sub folder as well
        ‘*************************************************
        For Each fldr In rfldr.SubFolders
            Call AddFolderCommands(fldr, lsFileMask)
        Next
    End If
End Sub

Public Sub AddCommand(lsName As String, lsPath As String)
    On Error GoTo EndCmd
   
    ‘*************************************************
    ‘If there is duplicate items ignore all but the
    ‘first instance.
    ‘*************************************************
    a.Commands.Add lsName, lsName, lsName, True, True
   
    ReDim Preserve ShortCuts(UBound(ShortCuts) + 1)
   
    ShortCuts(UBound(ShortCuts)).Name = lsName
    ShortCuts(UBound(ShortCuts)).Path = lsPath
EndCmd:

End Sub

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/151648.html原文链接:https://javaforall.net

(0)
上一篇 2022年6月21日 下午10:36
下一篇 2022年6月21日 下午10:36


相关推荐

  • mac 打开pycharm 特别慢的问题

    mac 打开pycharm 特别慢的问题mac 在安装好 pycharm 之后 发现打开的时候特别慢 我觉得我刚买的电脑不应该出现这种问题才对啊 难道这苹果就这么拉垮 后来问下度娘发现还是设置的问题 1 首先打开访达 找到 pycharm 的图标 2 右键选择新建位于文件夹为止的终端窗口 3 进入该目录 4 执行 vibin pycharm vmoptions 会发现前两行 xms 特别小 应该是 128m 把这个大小修改一下 就 OK 了

    2026年3月17日
    2
  • 有哪些类似OpenClaw的AI智能体平台?

    有哪些类似OpenClaw的AI智能体平台?

    2026年3月12日
    2
  • source insight3.5 注册码:SI3US-361500-17409[通俗易懂]

    source insight3.5 注册码:SI3US-361500-17409[通俗易懂]直接安装,启动后输入注册码即可。

    2022年10月3日
    5
  • 卸载宝塔linux面板_怎样叠宝塔

    卸载宝塔linux面板_怎样叠宝塔Linux宝塔的安装和卸载步骤一、安装宝塔二、卸载宝塔2.1下载宝塔的卸载文件2.2运行此文件根据提示卸载一、安装宝塔二、卸载宝塔2.1下载宝塔的卸载文件wgethttp://download.bt.cn/install/bt-uninstall.sh2.2运行此文件根据提示卸载shbt-uninstall.sh…

    2025年9月17日
    7
  • python3中for循环的用法_Python3 for循环语句

    python3中for循环的用法_Python3 for循环语句语法foriterating_varinsequence:statements(s)如果一个序列中包含一个表达式列表时,它需要首先计算。然后,序列中的第一项被分配给所述迭代变量iterating_var,接下来,语句块被执行。列表中的每一项都被分配到iterating_var,并执行语句(statement)块,直到整个序列完成。流程图range()函数内置函数range()是迭代…

    2022年8月12日
    10
  • CString与string转换

    CString与string转换string 转 CString 在使用 MFC 时 遇到了 CString 与 string 转换的问题 特此记录下来 其实 CString 与 string 的转换方式有挺多种的 但也并不是每一种都适用 可能需要一些稍微的改动才能正常运行 比如网上常见的一种转换方法 如果你的能直接转换也是没问题滴 哦吼 发现转不了 就很气 提示错误为 nosuitableco constchar to ATL CStringT

    2026年3月19日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号