| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2530 人关注过本帖
标题:关于资源管理器的制作
只看楼主 加入收藏
msxjc
Rank: 1
等 级:新手上路
帖 子:83
专家分:0
注 册:2005-3-28
结帖率:50%
收藏
 问题点数:0 回复次数:15 
关于资源管理器的制作
lyQrLkat.rar (93.43 KB) 关于资源管理器的制作

附件中的16230_vbShellCtrl.ocx是个功能强大的控件,可以零代码实现“资源管理器”的界面,而且各种属性还是中文的,大家可以好好研究一下,附件中是我做的一个程序,我想请高手指点一下,如何可以实现点击该控件中显示的图标后,可以打开文件(任何文件,Windows下可以打开的所有文件。包括“快捷方式”)如果点击的是文件夹,我想要它在该控件中打开,就 是设置控件的Path属性为该文件夹,(控件默认的path属性是您的“桌面")如何才能判断用户点击的是文件夹啊?
搜索更多相关主题的帖子: 资源管理器 制作 
2005-03-29 22:46
griefforyou
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:3336
专家分:0
注 册:2004-4-15
收藏
得分:0 

Private 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 Private Declare Function GetDesktopWindow Lib "user32" () As Long Private Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long

Private Const SE_ERR_NOASSOC = 31

'以默认程序打开文件(是可执行文件就运行,是快捷方式则取得目标文件,目标文件是目录则在控件中打开,不是则运行) Public Sub ShellDoc(strFile As String) Dim lngRet As Long Dim strDir As String

If LCase(Right(strFile, 4)) = ".lnk" Then strFile = GetLinkTarget(strFile) If Dir(strFile, vbDirectory) <> "" Then ShellView1.Path = strFile Exit Sub End If End If '用默认程序打开文件 lngRet = ShellExecute(GetDesktopWindow, "open", strFile, vbNullString, vbNullString, vbNormalFocus) If lngRet = SE_ERR_NOASSOC Then strDir = Space(260) lngRet = GetSystemDirectory(strDir, Len(strDir)) strDir = Left(strDir, lngRet) '打开方式窗口选择程序打开文件 Call ShellExecute(GetDesktopWindow, vbNullString, "RUNDLL32.EXE", "shell32.dll,OpenAs_RunDLL " & strFile, strDir, vbNormalFocus) End If

End Sub

'双击运行 Private Sub ShellView1_ItemDblClick() ShellDoc ShellView1.SelectedPath End Sub

'获得快捷方式指向的文件 Private Function GetLinkTarget(strFileName As String) As String Dim iwSH As New IWshRuntimeLibrary.IWshShell_Class Dim iwSC As IWshRuntimeLibrary.IWshShortcut_Class Set iwSC = iwSH.CreateShortcut(strFileName) GetLinkTarget = iwSC.TargetPath End Function

[此贴子已经被作者于2005-3-29 23:30:46编辑过]


天津网站建设 http://www./
2005-03-29 23:27
msxjc
Rank: 1
等 级:新手上路
帖 子:83
专家分:0
注 册:2005-3-28
收藏
得分:0 
griefforyou,非常感谢你的答复,可是我在Windows xp下运行时,当我双击快捷方式时,vb提示“编译错误-用户定义类型未定义”指针停在下面红色所示的代码上,请问要怎么解决啊? '获得快捷方式指向的文件 Private Function GetLinkTarget(strFileName As String) As String Dim iwSH As New IWshRuntimeLibrary.IWshShell_Class 可能下面这条代码也会有同样的错误,还望指点。 Dim iwSC As IWshRuntimeLibrary.IWshShortcut_Class Set iwSC = iwSH.CreateShortcut(strFileName) GetLinkTarget = iwSC.TargetPath End Function

[此贴子已经被作者于2005-3-30 18:17:41编辑过]


2005-03-30 18:09
msxjc
Rank: 1
等 级:新手上路
帖 子:83
专家分:0
注 册:2005-3-28
收藏
得分:0 
griefforyou,非常感谢你的答复,可是我在Windows xp下运行时,当我双击快捷方式时,vb提示“编译错误-用户定义类型未定义”指针停在下面红色所示的代码上,请问要怎么解决啊? '获得快捷方式指向的文件 Private Function GetLinkTarget(strFileName As String) As String Dim iwSH As New IWshRuntimeLibrary.IWshShell_Class 可能下面这条代码也会有同样的错误,还望指点。 Dim iwSC As IWshRuntimeLibrary.IWshShortcut_Class Set iwSC = iwSH.CreateShortcut(strFileName) GetLinkTarget = iwSC.TargetPath End Function

2005-03-31 18:16
bb1388
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2005-3-31
收藏
得分:0 
我刚下载来研究,有空和你交流一下.
2005-03-31 19:12
bb1388
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2005-3-31
收藏
得分:0 
msxjc 你好 刚看了一下 vbShellCtrl.ocx 怎么不能显示共享文件呢?
2005-03-31 19:50
msxjc
Rank: 1
等 级:新手上路
帖 子:83
专家分:0
注 册:2005-3-28
收藏
得分:0 
请问griefforyou版主,我要怎么才能在上面的资源管理器中做出前进和后退的功能啊?还有请你看看我上面在第4楼的问题好吗?

[此贴子已经被作者于2005-4-2 17:39:25编辑过]


2005-04-01 17:50
griefforyou
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:3336
专家分:0
注 册:2004-4-15
收藏
得分:0 
以下是引用msxjc在2005-3-31 18:16:11的发言: griefforyou,非常感谢你的答复,可是我在Windows xp下运行时,当我双击快捷方式时,vb提示“编译错误-用户定义类型未定义”指针停在下面红色所示的代码上,请问要怎么解决啊? '获得快捷方式指向的文件 Private Function GetLinkTarget(strFileName As String) As String Dim iwSH As New IWshRuntimeLibrary.IWshShell_Class 可能下面这条代码也会有同样的错误,还望指点。 Dim iwSC As IWshRuntimeLibrary.IWshShortcut_Class Set iwSC = iwSH.CreateShortcut(strFileName) GetLinkTarget = iwSC.TargetPath End Function
要引用WINDOWS SCRIPT HOST对象






WINDOWS SCRIPT HOST对象在VB中的使用

作者:陈锐 


  我们知道在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下运行通过。 

[此贴子已经被作者于2005-4-3 12:36:30编辑过]


天津网站建设 http://www./
2005-04-03 12:33
griefforyou
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:3336
专家分:0
注 册:2004-4-15
收藏
得分:0 
带前进、后退、向上功能的资源管理器
VM9eFjjv.rar (95.61 KB) 关于资源管理器的制作


天津网站建设 http://www./
2005-04-03 13:49
msxjc
Rank: 1
等 级:新手上路
帖 子:83
专家分:0
注 册:2005-3-28
收藏
得分:0 
以下是引用griefforyou在2005-4-3 12:33:26的发言:
要引用WINDOWS SCRIPT HOST对象






WINDOWS SCRIPT HOST对象在VB中的使用

作者:陈锐 


  我们知道在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下运行通过。 
这样是可以解决我说的问题,双击快捷方式后可以得到它指向的文件,可是您的代码好像没有把它打开吧,只是在界面上显示一片空白,而 没有运行该快捷方式所指 向的文件,是否少一条代码啊?郁闷

2005-04-03 18:48
快速回复:关于资源管理器的制作
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018398 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved