【问】如何实现类似快捷方式里的“查找目标”功能?

VBAHZ 2006-02-24 06:40:30
感觉这功能很酷!
它不是普通查找文件名的方式,因为即使目标文件名有变动,一般它也能找到的。
而且应该不是实时监视目录的(太占资源),比如打开几天前的快捷方式还是能定位到的。
最爽的是超快!这点是我们用Dir比不上的。
唯一的问题就是,当目标不在同一个盘符中,它就会胡乱定位——真讨厌!
但遗憾的是,这个功能是附加在快捷方式里的,一般无法调用。
(总不见得为了重新定位1万个文件,就要建1万个快捷方式吧?)

所以想请教,如何在VB代码中实现这个功能?

只有在自动定位实在找不到的情况下
(找不到就说找不到,不能像系统那样瞎指定一个),才将Dir作为最后的手段!
...全文
254 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
VBAHZ 2006-07-07
  • 打赏
  • 举报
回复
GZ
klever 2006-07-07
  • 打赏
  • 举报
回复
GZ
AnnaBear 2006-07-07
  • 打赏
  • 举报
回复
从楼主的贴子学习学习^_^
VBAHZ 2006-04-28
  • 打赏
  • 举报
回复
老大忽略了一个重要问题,查找目标不光只对照文件名!
而SearchTreeForFile恐怕只对照文件名吧?

那样的话对于01.mp3之类的基本就没啥用处了。
或者目标文件改名了而你又不知道新名字怎么办?

可快捷方式却不一样!
northwolves 2006-04-28
  • 打赏
  • 举报
回复
如果改成这样,很快就会发现没有这个文件

Private Sub Command1_Click()
MsgBox FindFile("c:\", "win.int")
End Sub
northwolves 2006-04-28
  • 打赏
  • 举报
回复
Private Declare Function SearchTreeForFile Lib "IMAGEHLP.DLL" (ByVal lpRootPath As String, ByVal lpInputName As String, ByVal lpOutputName As String) As Integer

Function FindFile(ByRef RootPath As String, ByRef FileName As String) As String
Dim r As Long
FindFile = String(1024, Chr(0))
r = SearchTreeForFile(RootPath, FileName, FindFile)
If r > 0 Then
FindFile = Split(FindFile, Chr(0))(0)
Else
FindFile = "not find"
End If
Exit Function
End Function



Private Sub Command1_Click()
MsgBox FindFile("c:\", "win.ini")
End Sub
VBAHZ 2006-04-28
  • 打赏
  • 举报
回复
GZ
VBAHZ 2006-02-28
  • 打赏
  • 举报
回复
经实测,肯定不会是在移动的时候,实时更新所有快捷方式的,多累啊,盘盘都转趴下了:)

另一个例子,当你移动的距离大一点时(比如移到另一个盘符)
这时,原来的快捷方式都失效了。
如果是实时更新的话,不会出现这样的情况!

只有一个可能,在创建快捷方式的时候记录了部分文件特征。
当“查找目标”时先测试一下目标是否存在,若不存在,则根据保留的特征在靠近的几个目录里搜索。

其实这些功能,VB的Dir也是能搞定的,但致命弱点——速度!!!
如果用FindFile之类的API的话,真的很烦诶:(
而且,文件特征要取哪些?取多少才够辨别?对不同类型文件是否要取不同特征?
如果再用VB代码来对比的话,还是那个致命点——速度!!!

猜想,可能“查找目标”功能有单独调用的可能,因为在系统的很多地方都能看见其效果(如Windows Media Player)
那样的话,是否意为着,VB可以调用这样一个“未公开”的API ???

要知道在imagehlp.dll里的Search File API,一句话搞定,那个简洁、那个效率,绝对是VB代码和FindFileFirst API做不到的:) (虽然可能在内部它使用了FindFile,但封装在系统库中,总比用VB代码写一遍强吧?)

onej 2006-02-28
  • 打赏
  • 举报
回复
系统在你移动的时候更新的,你模仿

1,485

社区成员

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

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