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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 16 岁高中生成功将 Linux 移植到 iPhone,并贴出详细指南[通俗易懂]

    16 岁高中生成功将 Linux 移植到 iPhone,并贴出详细指南[通俗易懂]本文转载自InfoQ,作者李俊辰如果你的旧iPhone已经无法支持你日常使用了,你会怎么处理这部iPhone呢?卖掉还是留起来收藏呢?近日,国外一名16岁的小开发者在YouTube上发布了一则视频,展示了自己是如何将Linux移植到一部无法使用的iPhone7。2020年3月,Corellium提出了ProjectSandcastle,通过使用checkra1n越狱程序在iPhone上成功运行Android,激发了开发者对那些旧型号的iPhone.

    2022年9月25日
    2
  • 规范化理论:多值依赖的理解_依赖关联泛化实现

    规范化理论:多值依赖的理解_依赖关联泛化实现多值依赖的定义我们用一个例子来引出多值依赖(MultivaluedDependency,MVD)的含义。假设学校中一门课程可由多名教师讲授,教学中他们使用相同的一套参考书,这样我们可用下图的非规范化的关系来表示课程C、教师T和参考书B间的关系。关系CTB如果关系CIB转化成规范化的关系,如图所示。规范后的关系CTB由此可以看出,规范后的关系模式…

    2025年7月28日
    2
  • 面试官:来说说单点登录的三种实现方式

    点击上方“全栈程序员社区”,星标公众号 重磅干货,第一时间送达 来源:cnblogs.com/yonghengzh/p/13712729.html 前言 在 B/S 系统中,登录功…

    2021年6月26日
    90
  • 字符数组反转_字符数组的初始化

    字符数组反转_字符数组的初始化关于字符串的反转,倒是很简单,但是编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组char[]的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用O(1)的额外空间解决这一问题。你可以假设数组中的所有字符都是ASCII码表中的可打印字符。示例1:输入:[“h”,“e”,“l”,“l”,“o”]输出:[“o”,“l”,“l”,“e”,“h…

    2022年5月3日
    50
  • 走完同一条街,回到两个世界

    宿舍楼下就那么寥寥几棵树,知了一直在叫啊叫的不停.小时候跟着它们一起叫,用杆子粘着活好的面去黏它们,虽然从来都捉不到,现在,它们还在叫,我却已经过了跟它们玩的年纪.暑假回家呆了几天,上班,坐公交,下班,坐公交.在公司里清清爽爽几乎忘了这是夏天,下班了一出门喘口气都要流汗,还要被挤进密不透风的电梯里狠狠压缩一下,电梯也很累,每个楼层都要停一下,打开门叹口气接着往下走,满满一电梯的脑袋

    2022年3月9日
    43
  • 彻底理解js中的闭包

    彻底理解js中的闭包闭包是js的一个难点也是它的一个特色,是我们必须掌握的js高级特性,那么什么是闭包呢?它又有什么用呢?我们都知道,js的作用域分两种,全局和局部,基于我们所熟悉的作用域链相关知识,我们知道在js作用域环境中访问变量的权利是由内向外的,内部作用域可以获得当前作用域下的变量并且可以获得当前包含当前作用域的外层作用域下的变量,反之则不能,也就是说在外层作用域下无法获取内层作用域下的变量,同样在不同的…

    2022年6月24日
    23

发表回复

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

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