关于建立快捷方式的老问题!急!急!!解决问题给25分!!我就这么多了!!!

一笑e而过 2001-12-19 05:16:37
看了很多介绍在桌面和程序组中建立快捷方式的代码,其中一个如下,在执行时,在创建程序组时会出现“找不到入口”的错误,而创建程序快捷方式时又会出现“非法操作”的提示。请问谁能帮我解决这个问题,我以分相谢!!!!
代码如下:

Private Declare Function OSfCreateShellGroup Lib "Vb6stkit.dll" _
Alias "fCreateShellFolder" (ByVal lpstrDirName As String) As Long

Private Declare Function OSfCreateShellLink Lib "Vb6stkit.dll" _
Alias "fCreateShellLink" (ByVal lpstrFolderName As String, _
ByVal lpstrLinkName As String, ByVal lpstrLinkPath As String, _
ByVal lpstrLinkArguments As String) As Long

Private Declare Function OSfRemoveShellLink Lib "Vb6stkit.dll" _
Alias "fRemoveShellLink" (ByVal lpstrFolderName As String, _
ByVal lpstrLinkName As String) As Long

'---- 其中lpstrDirName指定了程序组的名称;lpstrfoldername指定保存快捷方式的文件夹,默认为“c:\Windows\start menu\programs”,lpstrlinkname指定快捷方式的文件名,lpstrpathname指定快捷方式所指向的应用程序或文件。

'---- 下面的代码具体演示了以上三个函数的用法:

'---- 首先在VB下新建“工程”,然后在Form1的“通用”,“声明”部分输入上面列出的函数声明,然后在Form1上添加三个命令按钮,在其Click事件中分别输入:

Private Sub Command1_Click()
Dim lresult As Long
'在桌面创建记事本的快捷方式
lresult = OSfCreateShellLink("..\..\desktop", "记事本", "c:\Windows\notepad.exe", "")

'在开始菜单创建记事本的快捷方式
lresult = OSfCreateShellLink("..\..\start menu", "记事本", "c:\Windows\notepad.exe", "")

'在程序菜单的Test程序组下创建记事本的快捷方式
lresult = OSfCreateShellLink("test", "记事本", "c:\Windows\notepad.exe", "")
End Sub

Private Sub Command2_Click()
Dim lresult As Long
'在程序菜单中添加一个名为Test的程序组
lresult = OSfCreateShellGroup("Test")
End Sub

Private Sub Command3_Click()
Dim lresult As Long
'删除开始菜单上的快捷方式
lresult = OSfRemoveShellLink("..\..\start menu", "记事本")
'删除桌面上的快捷方式
lresult = OSfRemoveShellLink("..\..\desktop", "记事本")
'删除Test程序组下的快捷方式
lresult = OSfRemoveShellLink("Test", "记事本")
End Sub
...全文
132 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
一笑e而过 2001-12-28
  • 打赏
  • 举报
回复
NightBreak(午夜黎明)
对不起,来迟了。
我的Email: yjsou@x263.net
谢谢!
xuxia 2001-12-26
  • 打赏
  • 举报
回复
好像中间有空格的目录应该用〔〕包含起来。
NightBreak 2001-12-20
  • 打赏
  • 举报
回复
To yjsou:
1.WIN95以上版本一般是带VB5STKIT.dll的. 另外你的计算机也可能安装了某些VB5编写的程序,只不过没有安装到SYSTEM目录,如VIRTUALDRIVE的VB5版本等. 你可以尝试搜索整个电脑.
2.告诉我你的EMAIL,我有空给你发一个. yellowarmy@sina.com
一笑e而过 2001-12-20
  • 打赏
  • 举报
回复
xuxia(旋风),通过DDE是可以解决,但是我试过发现如果程序的安装目录在\Program File\这种中间有空隔的目录下时,这种方法就不凑效了。
xuxia 2001-12-20
  • 打赏
  • 举报
回复
其实通过DDE的方式可以解决。
一笑e而过 2001-12-20
  • 打赏
  • 举报
回复
谢谢DeityFox(神狐)与NightBreak(午夜黎明),不过,Vb5stkit.dll在哪儿能找到呢?我没有VB5!在VB6环境下能兼容Vb5stkit.dll吗?
你们的方法我去试试,若不行,还不吝赐教!!你们把分平分了吧!!(好像平分不了!:))

NightBreak 2001-12-19
  • 打赏
  • 举报
回复
哦,忘了解决办法,COPY一个VB5的这个DLL到SYSTEM目录或当前目录.也许程序体积会增大一些,不过比起用SCRIPT和DDE来讲,就方便多了.
yellowarmy@sina.com
NightBreak 2001-12-19
  • 打赏
  • 举报
回复
楼上的也太夸张了吧?
其实有很多关于用安装动态链接库来建立快捷方式的资料和源码,但是都是Vb4stkit.dll,Vb5stkit.dll,我曾经想当然地尝试过将4,5 换成6,结果发生这样的错误.
原因是VB6的这个DLL和以前的是不兼容的.
DeityFox 2001-12-19
  • 打赏
  • 举报
回复
WINDOWS SCRIPT HOST对象在VB中的使用
(录入日期:2000.10.22 阅读次数:271) 转载不详
作者:不详

--------------------------------------------------------------------------------

WINDOWS SCRIPT HOST对象在VB中的使用

时间:2000/10/12 18:18 作者:陈锐



  我们知道在DOS下我们可以利用批处理文件来执行一些基本的系统和文件操作。而为了让用户能在Windows下同样得到功能,微软提供了Windows Script Host。在本文中我向大家介绍的是如何在VB中使用Windows Script Host对象来丰富自己的程序。


  打开VB,点击菜单中的Project|References项,在弹出的References列表中如果有一项:Windows Script Host Object Modle。那么说明你的系统中已经安装了Windows Script Host对象,选中该对象然后再按确定键就可以将Windows Script Host对象加入到自己的工程中了。


  1、获得Windows下一些特殊目录


  如何获得Windows下一些特殊的文件目录(例如桌面、程序菜单)呢?使用下面的程序就可以获得这些特殊目录并在ListBox1中列出:


  Dim iw1 As New IWshRuntimeLibrary.IWshShell_Class


   List1.AddItem iw1.SpecialFolders(″Desktop″)


  ’获得桌面目录


  List1.AddItem iw1.SpecialFolders(″Fonts″)


  ’获得系统字体目录


  List1.AddItem iw1.SpecialFolders(″Programs″)


  ’获得程序菜单目录


  List1.AddItem iw1.SpecialFolders(″StartUp″)


  ’获得程序启动目录


  List1.AddItem iw1.SpecialFolders(″Recent″)


  ’获得最近使用文件目录


  List1.AddItem iw1.SpecialFolders(″FAVORITES″)


  ’获得收藏夹目录


  List1.AddItem iw1.SpecialFolders(″SENDTO″)


  ’获得发送到目录


  List1.AddItem iw1.SpecialFolders(″NETHOOD″)


  ’获得网络邻居目录


  List1.AddItem iw1.SpecialFolders(″AppData″)


  ’获得微软程序数据目录


  2、运行程序


  在VB中,我们有时候需要调用外部程序。而且还要暂停VB程序等待外部程序程序执行完毕。使用Windows Script Host对象,简直易如反掌。例如下面的语句:


  Dim iw1 As New IWshRuntimeLibrary.IWshShell_Class


  iw1.Run ″c:\windows\notepad.exe″,WshMaximizedFocus, True


  就可以执行Windows下的记事本程序并使当前程序等待直到记事本程序关闭再执行下面的语句,如果不需要等待,将Run语句中的第三个参数从True改为False就可以了。


  3、建立和断开网络驱动器映射


  在一般情况下要在VB中建立网络驱动器连接需要使用复杂的API函数,而使用了Windows Script Host对象就可以使得一切变得十分简单,来看下面的范例:


  Dim iwNet As New IWshNetwork_Class


  ’获得计算机名


  Debug.Print iwNet.ComputerName


  ’获得用户所在的域名


  Debug.Print iwNet.UserDomain


  ’获得用户名


  Debug.Print iwNet.UserName


  ’将网络上的主机Server1的共享驱动器Share_d映射为本机的H盘


  iwNet.MapNetworkDrive ″H:″,″\\Server1\Share_d″


  For i=0 To iwNet.EnumNetworkDrives.Count-1


  List1.AddItem iwNet.EnumNetworkDrives(i)


  Next i


  上面的程序首先在Debug窗口中显示本计算机和所在网络的名称以及用户名,然后建立一个网络驱动器映射,最后将映射到本机的驱动器在ListBox1中列出来。如果要断开映射的驱动器,只要调用下面的语句就可以了:


  ’断开驱动器


  iwNet.RemoveNetworkDrive ″H:″


  需要注意的一点是:调用Windows Script Host对象建立网络连接如果出现错误(例如要连接的主机不存在或驱动器错误),它不会象API函数那样返回一个错误码而会产生一个OLE错误,所以在程序中对于错误处理的代码一定要写好。


  4、建立快捷方式


  建立文件快捷方式并将快捷方式保存到文件也是Windows Script Host对象提供的功能之一,来看下面的代码:


  Dim iw1 As New IWshRuntimeLibrary.IWshShell_Class


  Dim iwSC As New IWshShortcut_Class


  ’建立一个快捷方式文件


  Set iwSC=iw1.CreateShortcut(″c:\windows\notepad1.lnk″)


  ’设定快捷方式指向的对象


  iwSC.TargetPath=″c:\windows\notepad.exe″


  ’设定对象(这里是Notepad.exe)运行时的参数


  iwSC.Arguments=″c:\a.txt″


  ’设定对象运行时的工作目录


  iwSC.WorkingDirectory=″c:\″


  ’设定快捷方式的图标


  iwSC.IconLocation=″c:\windows\notepad.exe,1″


  ’保存快捷方式到文件


  iwSC.Save


  上面的程序建立一个指向Windows下记事本的快捷方式并保存到文件中。


  5、注册表操作


  使用Windows Script Host对象还可以进行注册表操作,例如建立、修改、读取、删除主键或者键值等。而且只需要三个函数,比使用Windows API来说方便的多。下面的语句就是一个建立和删除注册表键值的范例:


  Dim WSHShell As New IWshRuntimeLibrary.IWshShell_Class


  ’在HKEY_CURRENT_USER下建立一个项,将默认值设置为Top level key


  WSHShell.RegWrite ″HKCU\MyRegKey\″,″Top level key″


  ’在MyRegKey下建立一个子项,将默认值设置为Second level key


  WSHShell.RegWrite ″HKCU\MyRegKey\Entry\″,″Second level key″


  ’在MyRegKey下建立一个值,名称为Value


  WSHShell.RegWrite ″HKCU\MyRegKey\Value″, 1


  ’在MyRegKey下建立一个值,名称为Entry,类型设置为REG_DWORD


  WSHShell.RegWrite ″HKCU\MyRegKey\Entry″,2,″REG_DWORD″


  WSHShell.RegWrite ″HKCU\MyRegKey\Entry\Value1″,3,″REG_BINARY″


  ’删除相应的键


  WSHShell.RegDelete ″HKCU\MyRegKey\Entry\Value1″


  WSHShell.RegDelete ″HKCU\MyRegKey\Entry\″


  WSHShell.RegDelete ″HKCU\MyRegKey\″


  上面的程序建立并删除建立的项,要看到程序运行效果,可以将上面的最后三句RegDelete语句删除,然后打开注册表编辑器察看。从上面的语句可以看到,使用RegWrite语句可以建立和修改一个项或者值,如果第一个参数字符串最后有一个“\”符号的话就是操作一个项,否则就是操作一个值。


  6、获得当前Windows环境参数


  环境参数就是操作系统保存在内存中的一些标记或指示性字符串,它纪录了一些基本的系统设置,例如路径、临时文件目录等,使用Windows Script Host对象可以获得所有的Windows环境参数:


  Dim iw1 As New IWshRuntimeLibrary.IWshShell_Class


  Dim strinfo


  For Each strinfo In iw1.Environment(″Process″)


  List1.AddItem strinfo


  Next


  上面的程序得到当前所有的环境参数并在List1上列出来。


  从上面我的介绍可以看到Windows Script Host对象的确是一个很有用的Windows系统操作对象,易于使用并且功能强大。(微软提供Windows Script Host对象以及另外一个文件操作对象Microsoft Scripting Run的另外一个目的是这两个对象可以在VB Script中建立,这样就可以通过Web执行文件和系统操作了,但是却被一些人利用,例如著名的I Love You 病毒,就是利用Windows Script Host对象操作注册表使自己附身Windows中,在利用Microsoft Scripting Run对象破坏系统文件)


  以上程序用VB6编写,在Windows98、2000下运行通过。


7,771

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧