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


相关推荐

  • python冒泡排序代码和注释_Python 冒泡排序

    python冒泡排序代码和注释_Python 冒泡排序冒泡排序(BubbleSort)也是一种简单直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢”浮”到数列的顶端。见下图:方法一:常规实现冒泡排序#方法1#定义一个列表,用于存放数字list=[]whileTrue:#…

    2022年10月16日
    3
  • vue中启动前段服务器代码$ http-server

    vue中启动前段服务器代码$ http-server

    2021年10月12日
    51
  • 十字相乘法c语言,十字相乘法的运算方法

    十字相乘法c语言,十字相乘法的运算方法借助画十字分解系数 从而把二次三项式分解的方法叫做 是二次三项式分解的一种常用方法 它是先将二次三项式的 a 及常数项 c 都分解为两个因数的乘积 一般会有几种不同的分法 然后按斜线交叉相乘 再相加 若有 则有 否则 需交换的位置再试 若仍不行 再换另一组 用同样的方法试验 直到找到合适的为止 在我们做分解题时 可以参照下面的口诀 首先提取公因式 然后考虑用公式 十字相乘试一试 分组分得要合适

    2026年3月20日
    2
  • 微信公众号开发流程指南

    微信公众号开发流程指南微信公众号开发流程指南一 物料准备二 开发须知 0 接入验证 1 消息类型概括 MsgType 2 申请服务号的原因为账号类型所支持功能不同 职能不同 3 当开启服务器配置后 公众号的原始菜单将会失效 会以自定义菜单为准 4 如下文介绍 Api 中出现 Token 字样 则统一为通过 AppId 和 AppSecret 获取到的临时令牌三 开发流程及业务场景 持续补充 1 关注 订阅公众号实现登录功能 2 生成带参数的二维码 2 1 创建二维码 2 2 获取二维码 2 3 前端通过返回的 url 直接显示二维码即可一 物料准备微信公众平

    2026年3月17日
    3
  • Git下载、安装与环境配置「建议收藏」

    一、git下载与安装百度git官网,下载链接,根据自己电脑系统下载相应的安装包,下载最新版本,点击红框或篮筐处即可点击下载好的安装包安装这个软件一直点击next,直到出现install,点击install,安装完成后点击finish:安装好后在桌面界面点击鼠标右键,会出现如下界面检查git是否安装OK键盘Ctrl+r,然后在弹出框中出入cdm,弹出如下界…

    2022年4月12日
    44
  • Android 多个Activity bindService的使用及Service生命周期

    Android 多个Activity bindService的使用及Service生命周期原文:https://blog.csdn.net/iispring/article/details/48169339 Android中有两种主要方式使用Service,通过调用Context的startService方法或调用Context的bindService方法,本文只探讨纯bindService的使用,不涉及任何startService方法调用的情况。如果想了解startService…

    2022年5月7日
    74

发表回复

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

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