五笔打字通主页
在实际的VB编程工作中,常常要为自己的程序在桌面生成一个快捷图标。
用VB在桌面生成图标我提供两种方式,这两种方法都还很简单。
第一种方法,利用vb5stkit.dll来生成桌面图标:
1.利用现成的DLL文件来创建桌面图标,这个DLL文件就是VB5STKIT.DLL,大小才29K,很小,压缩一下就更小了,请大家百度搜索 vb5stkit.dll 下载。
在VB编程,首先要在窗体模块中引用这个DLL,代码如下:
Private Declare Function fCreateShellLink Lib "VB5STKIT.DLL" (ByVal lpstrFolderName As String, ByVal lpstrLinkName As String, ByVal lpstrLinkPath As String, ByVal lpstrLinkArgs As String) As Long
2.然后,在窗口的load事件中,写一行代码就可以新建一个程序的图标。
Private Sub Form_Load()
fCreateShellLink "..\..\..\..\..\..\Desktop", "新桌面图标", App.Path & "\工程1.exe", ""
End Sub
注:以上代码生成EXE程序,必须要把要生成快捷图标的EXE程序放在同一目录中,同时,VB5STKIT.DLL也要放在同一目录里。假定以上VB源代码生成一个EXE,文件名叫: 工程1.exe,那么把这个工程1.exe和VB5STKIT.DLL放在同一目录里,运行工程1.exe,就可以在桌面上生成一个快捷图标,名称是"新桌面图标"。此VB源码在WIN7测试通过。
---------------------------------------------
第二种方法:先做一个生成程序图标的函数,然后,根据系统的不同,利用API,找出系统的桌面地址,再根据桌面的创建桌面图标。
1.自己先在窗体创建一个生成程序快捷图标的函数CreateShellLink,这个函数的源代码如下:
Function CreateShellLink(ByVal LinkFile As String, _
ByVal TargetPath As String, _
Optional ByVal WorkingDirectory As String, _
Optional ByVal Hotkey As String, _
Optional ByVal WindowStyle As Integer = 1, _
Optional ByVal IconLocation As String, _
Optional ByVal Description As String) As Long
On Error Resume Next
If InStr(2, LinkFile, ".") = 0 Then LinkFile = LinkFile & ".lnk"
Dim Free As Integer
Free = FileSystem.FreeFile
Open LinkFile For Output As #Free
If Err Then CreateShellLink = Err: Exit Function Else Kill LinkFile: Close #Free
With CreateObject("WScript.Shell").CreateShortcut(LinkFile)
.WindowStyle = WindowStyle
.TargetPath = TargetPath '目标
.WorkingDirectory = WorkingDirectory '工作目录
.Hotkey = Hotkey '热键
.Description = Description '备注
.IconLocation = IconLocation
.Save
End With
CreateShellLink = Err
End Function
2.找出系统的桌面地址。这个也可以通过API来做,先在窗体模块引用API,代码如下:
Private Declare Function SHGetSpecialFolderLocation Lib "Shell32" (ByVal hwndOwner As Long, ByVal nFolder As Integer, ppidl As Long) As Long
Private Declare Function SHGetPathFromIDList Lib "Shell32" Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal szPath As String) As Long
Private Declare Function GetWindowsDirectory Lib "kernel32" Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
Private Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
Private Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long
Const MAX_LEN = 200 '字符串最大长度
Const DESKTOP = &H0& '桌面
3.在窗体的load事件,先通过API找到系统的桌面地址,然后根据函数 生成一个程序的快捷图标,代码如下:
Private Sub Form_Load()
Dim sTmp As String * MAX_LEN
Dim nLength As Long
Dim pidl As Long
SHGetSpecialFolderLocation 0, DESKTOP, pidl
SHGetPathFromIDList pidl, sTmp
Dim strdz As String '桌面地址
strdz = Left(sTmp, InStr(sTmp, Chr(0)) - 1) '找到桌面地址
If Right(strdz, 1) <> "\" Then strdz = strdz + "\" '为桌面地址最后面加\
d11 = strdz & "新桌面图标2.lnk" '需要在桌面生成的快捷图标路径名称
d22 = strdz & "工程1.exe" '需要生成图标的程序路径名称
d33 = strdz & "abc.ico" '可以为这个快捷图标配上一个新的图标
'=========
CreateShellLink d11, d22, , , , d33 '生成桌面图标
End Sub
运行以上代码,生成工程1.exe,运行这个工程1(在同一目录里,先要有一个abc.ico的图标),就会在桌面上为工程1.exe生成一个图标,名称是新桌面图标2。
看上去,第二种方法好像代码太多了,但事实上,它也有很多好处,很明显,可以DIY,首先,图标可以改一下abc.ico,就可以生成不同的图标,还有,你可以在改一下代码,就可以为这个新创建的图标,生成热键,备注等。
来源:济亨网
本文链接:http://wb86.com/post/15.html