本文详细介绍用DDE创建桌面快捷方式
受"用DDE连接方法向开始菜单中添加快捷方式"一文的启发,我写了一个可以向桌面增加快捷方式的小程序。与调用Vb5stkit.dll或Vb6stkit.dll来建立快捷方式相比,最大的特点在于避免了对该DLL文件的依赖(并不是每一台Win9x的机上都有的这些文件的)。是不是很环保?
原理:利用Text控件的DDE在系统开始菜单中添加一个快捷方式,然后将该快捷方式剪切到桌面上来。
须解决的问题:取得系统开始菜单和桌面的路径。这其中当然免不了要调用到API的SHGetSpecialFolderLocation 和SHGetPathFromIDList 函数。
实现步骤:
1.新建工程;
2.在表单中增加一个文本框(txtLnk)及一个命令按钮(cmdMakeLnk);
3.加入以下代码:
Option Explicit
Const CSIDL_DESKTOP = &H0 系统桌面
Const CSIDL_PROGRAMS = &H2 系统"开始-$#@62;程序"菜单
Private Type SHITEMID
cb As Long
abID As Byte
End Type
Private Type ITEMIDLIST
mkid As SHITEMID
End Type
Private Declare Function SHGetSpecialFolderLocation _
Lib "shell32.dll" (ByVal hwndOwner As Long, _
ByVal nFolder As Long, pidl As ITEMIDLIST) As Long
Private Declare Function SHGetPathFromIDList Lib _
"shell32.dll" Alias "SHGetPathFromIDListA" _
(ByVal pidl As Long, ByVal pszPath As String) As Long
定义取得系统特定文件夹的路径的函数。
Private Function GetSpecialfolder(CSIDL As Long) As String
Dim lRet As Long
Dim IDL As ITEMIDLIST
Dim sPath As String
lRet = SHGetSpecialFolderLocation(100, CSIDL, IDL)
错误时返回非0值
If lRet = 0 Then
sPath = Space$(512)
lRet = SHGetPathFromIDList(ByVal IDL.mkid.cb, ByVal sPath)
一定要删除末尾的 0 字节。这在调用API时常常会遇到。
GetSpecialfolder = Left$(sPath, InStr(sPath, Chr$(0)) - 1)
Exit Function
End If
GetSpecialfolder = ""
End Function
Private Sub cmdMakeLnk_Click()
Dim sProgramsPath As String
Dim sDesktopPath As String
sProgramsPath = GetSpecialfolder(CSIDL_PROGRAMS)
sDesktopPath = GetSpecialfolder(CSIDL_DESKTOP)
txtLnk.LinkTopic = "Progman|Progman"
txtLnk.LinkMode = 2
格式:
"[AddItem($#@60;欲建立快捷方式的命令行(可以是文件夹)$#@62;,$#@60;快捷方式的名称$#@62; ,[快捷方式的图标文件],[第几个图标])]"
注意:
1、由于文件名是字符串,所以必须加引号,也就是以下这行命令为什么们用了两个引号的原因
2、在"快捷方式的图标文件"中所出现的路径及文件必须是8.3格式,不支持长文件名。
下面假设为 C:\WINDOWS\CALC.EXE建立快捷方式
txtLnk.LinkExecute "[AddItem(""C:\WINDOWS\CALC.EXE"",""计算器"" )]"
将快捷方式移至桌面
sProgramsPath = sProgramsPath & "\计算器.lnk"
sDesktopPath = sDesktopPath & "\计算器.lnk"
FileCopy sProgramsPath, sDesktopPath
Kill sProgramsPath
End Sub
以上在Windows98、ME + VB5、VB6通过。有任何问题欢迎你跟我联系lonstar@cmmail.com
作者:lonstar 责编:豆豆技术应用
- Visual Basic 9
- Visual Basic/VB入门教程
- Visual Basic界面/视图
- Visual Basic图像/多媒体
- Visual Basic数据库
- Visual Basic文件/目录/磁盘
- Visual Basic网络通信编程
- Visual Basic系统编程
- Visual Basic控件编程
- Visual Basic/VB源码下载