Using MSAgent to Scan the Start Menu

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航