首页 > 其他分享 >VB6调用API打开目标文件所在文件夹且选中目标文件

VB6调用API打开目标文件所在文件夹且选中目标文件

时间:2023-01-14 10:33:48浏览次数:51  
标签:Function 文件 String ByVal Long lngPidl lpFileName API VB6


Option Explicit

' 模块名称: mOpenFolderAndSetFileFocus
'     作者: 唐细刚
'     时间: 2010-08-22
'     功能: VB6调用API打开目标文件所在文件夹且选中目标文件
' 注:
' 由于调用 Explorer.exe /select 方式会使系统产生多余的 Explorer.exe 进程
' 所以还是API来实现较好,速度也有优势,不知道是否低碳? O(∩_∩)O~

Private Declare Function SHCreateFromPath Lib "Shell32" Alias "ILCreateFromPathA" (ByVal lpFileName As String) As Long
Private Declare Sub SHFree Lib "Shell32" Alias "ILFree" (ByVal lngPidl As Long)
Private Declare Function SHOpenFolderAndSelectItems Lib "Shell32" ( _
        ByVal pidlFolder As Long, _
        ByVal cidl As Long, _
        ByVal apidl As Long, _
        ByVal dwFlags As Long) As Long

'增加判断文件是否存在

Private Const INVALID_HANDLE_VALUE = -1
Private Const MAX_PATH = 260Private Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End TypePrivate Type WIN32_FIND_DATA
dwFileAttributes As Long
ftCreationTime As FILETIME
ftLastAccessTime As FILETIME
ftLastWriteTime As FILETIME
nFileSizeHigh As Long
nFileSizeLow As Long
dwReserved0 As Long
dwReserved1 As Long
cFileName As String * MAX_PATH
cAlternate As String * 14
End TypePrivate Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" ( _
ByVal lpFileName As String, _
lpFindFileData As WIN32_FIND_DATA) As LongPrivate Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long) As Long
Private Function FileExists(ByVal lpFileName As String) As Boolean
Dim tpWFD As WIN32_FIND_DATA
Dim lngFile As Long
lngFile = FindFirstFile(lpFileName, tpWFD)
FileExists = lngFile <> INVALID_HANDLE_VALUE
If lngFile Then Call FindClose(lngFile)
End Function

'调用成功返回 True,否则返回 False

 

Public Function OpenFolderAndSetFileFocus(ByVal lpFileName As String) As Boolean
On Error Resume Next
Dim lngPidl As Long
Dim lngRet As Long
Dim strFile As String
strFile = Trim(lpFileName)
If FileExists(strFile) = False Then Exit Function
lngPidl = SHCreateFromPath(strFile & vbNullChar)
If lngPidl <> 0 Then
lngRet = SHOpenFolderAndSelectItems(lngPidl, 0, 0, 0)
If lngRet = 0 Then
OpenFolderAndSetFileFocus = True
End If
Call SHFree(lngPidl)
End If
End Function

 

标签:Function,文件,String,ByVal,Long,lngPidl,lpFileName,API,VB6
From: https://blog.51cto.com/u_8260968/6007460

相关文章

  • 关于 Windows 7 ISO 的2个不同文件名
    以简体32位版为例,目前有2个版本的文件名: (1)7600.16385.090713-1255_x86fre_client_zh-cn_Retail_Ultimate-GRMCULFRER_CN_DVD.iso(2)cn_windows_7_ultimate_x86_dvd_x15......
  • VB6判断操作系统是否运行在安全模式
    PrivateDeclareFunctionGetSystemMetricsLib"user32"(ByValnIndexAsLong)AsLongPrivateConstSM_CLEANBOOT&=67 PublicFunctionIsSystemRunInSafeMode()A......
  • web -文件包含姿势汇总
    文件包含(更新......)php伪协议include爆破点方法1php://filter?file=php://filter/write=convert.base64-decode/resource=4.php过滤了php那么我们用Php进行绕过......
  • MobaXterm_crack不显示层级目录但是CD文件目录存在
    问题今天部署,使用MobaXterm_crack链接服务器,很不巧出现了如下可以看到CD进入目录是有的,只不过可视化界面没有原因打开服务器连接有这个,也就是我们工具问题,找不到指定文件,导......
  • 无法删除文件提示已在另一个程序中打开
    原文链接:https://blog.csdn.net/zxw1473474655/article/details/103816176由于文件正在打开着,所以无法删除。在能清楚知道该文件在哪个程序中打开的情况下,比如文件夹里有......
  • ES之RestAPI实现自动补全
         创建索引库的DSL语句//酒店数据索引库PUT/hotel{"settings":{"analysis":{"analyzer":{"text_anlyzer":{"tokenize......
  • idea 关闭文件夹折叠
    需求:  网上都说是,找到右上角的小齿轮,去掉√HideEmptyMiddlePackages 但是我的idea右上角没小齿轮 但是我的左上角有,FlattenPackages去掉√ ......
  • win32com操作word API精讲&项目实战 预告
    对win32com的使用和研究有好一段时间了,想起本人刚开始做word编程项目时的各种痛苦:网上能找到的都是简单的示例,如同helloword一般,嚼之无味又无可奈何。读office的word接口......
  • linux在文件中查询字符串
    使用命令:cat文件名|grep字符串这个是最简单也是最常用的查找方式[root@jr-yfb-ng_tm-10-94logs]#catcatalina.out|grep经销商银行卡[INFO][2019-01-1620:05:5......
  • Spring获取配置文件常量
    1.配置文件#policyFilepolicyFile.es.host=1.1.1.1policyFile.es.port=9200policyFile.es.hostname=xxxxpolicyFile.es.password=1234562.常量实体类importorg.springfra......