我做的是数据库,以前还没考虑到压缩时我是以源文件存放在程序的目录下,当然是采用相对路径,程序在做时放在E:\数据库\下,由于要实现查询到可以打开文件,因此我把文件存放在"E:\数据库\文件\"这个文件夹下,把文件的地址存放进去,在程序里用TextBox与文件的地址这个字段绑定,然后根据不同的文件后缀名实现不同的打开方式
Option Explicit
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 Sub command1_click()
Dim FileTypestr As String
Dim sFileName, sContent As String '打开word文档
Dim wrdApp As Object
sFileName = Text2.Text
If Err <> 0 Then Exit Sub
If sFileName = "" Then Exit Sub
FileTypestr = ExtractFileName(sFileName)
If LCase(FileTypestr) = "doc" Then
Set wrdApp = CreateObject("Word.Application")
wrdApp.Visible = True
wrdApp.Documents.Open FileName:=sFileName, ReadOnly:=True
sContent = wrdApp.ActiveDocument.Content
End If
If LCase(FileTypestr) = "jpg" Then
ShellExecute 0, "open", sFileName, vbNullString, vbNullString, 5
End If
End Sub
Private Function ExtractFileName(ByVal PathName As String) As String
Dim str_Pos As Integer
str_Pos = InStrRev(PathName, ".")
ExtractFileName = Mid(PathName, str_Pos + 1)
End Function
这是原来还没考虑压缩前可以实现的,但现在一压缩了,我还是把被压缩后的文件都放在"E:\数据库\文件"这个文件夹下,把我的源文件删除了,我解压后的文件也都放在这个文件夹下,我现在怎么实现打开被解压的文件呢,我的想法是有没有获得被解压的文件类型和文件名呢?
Option Explicit
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 Sub command1_click()
Dim FileTypestr As String
Dim sFileName, sContent As String '打开word文档
Dim wrdApp As Object
sFileName = Text2.Text
If Err <> 0 Then Exit Sub
If sFileName = "" Then Exit Sub
FileTypestr = ExtractFileName(sFileName)
If LCase(FileTypestr) = "doc" Then
Set wrdApp = CreateObject("Word.Application")
wrdApp.Visible = True
wrdApp.Documents.Open FileName:=sFileName, ReadOnly:=True
sContent = wrdApp.ActiveDocument.Content
End If
If LCase(FileTypestr) = "jpg" Then
ShellExecute 0, "open", sFileName, vbNullString, vbNullString, 5
End If
End Sub
Private Function ExtractFileName(ByVal PathName As String) As String
Dim str_Pos As Integer
str_Pos = InStrRev(PathName, ".")
ExtractFileName = Mid(PathName, str_Pos + 1)
End Function
这是原来还没考虑压缩前可以实现的,但现在一压缩了,我还是把被压缩后的文件都放在"E:\数据库\文件"这个文件夹下,把我的源文件删除了,我解压后的文件也都放在这个文件夹下,我现在怎么实现打开被解压的文件呢,我的想法是有没有获得被解压的文件类型和文件名呢?
2.想直接解压后打开,你必须在解压时指定好路径,然后看下面写模块里面Public Const INVALID_HANDLE_VALUE = -1
Public Const MAX_PATH = 260
Public Const FILE_ATTRIBUTE_READONLY = &H1
Public Const FILE_ATTRIBUTE_HIDDEN = &H2
Public Const FILE_ATTRIBUTE_SYSTEM = &H4
Public Const FILE_ATTRIBUTE_DIRECTORY = &H10
Public Const FILE_ATTRIBUTE_ARCHIVE = &H20
Public Const FILE_ATTRIBUTE_NORMAL = &H80
Public Const FILE_ATTRIBUTE_TEMPORARY = &H100
Public Const FILE_ATTRIBUTE_COMPRESSED = &H800Public Type FILETIME dwLowDateTime As Long
dwHighDateTime As Long
End TypePublic Type SECURITY_ATTRIBUTES nLength As Long
lpSecurityDescriptor As Long
bInheritHandle As Long
End TypePublic 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 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 FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long
Private Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" (ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long
Private Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long) As LongSub Open(ByVal strDir As String)
Dim WFD As WIN32_FIND_DATA
Dim SA As SECURITY_ATTRIBUTES
Dim hFile As Long
Dim bNext As Long
Dim fCount As Long
Dim currFile As String
Dim strFileList As String
WFD.cFileName = Space$(256)
hFile = FindFirstFile(strDir, WFD)''根据你的路径,找第一个
strFileList = ""
If (hFile = INVALID_HANDLE_VALUE) Then
Exit Function''没有就over
End If
ShellExecute hwnd, "open", strFileName, "", "", vbNormalFocus
Dim i As Integer
Do
bNext = FindNextFile(hFile, WFD)
ShellExecute hwnd, "open", strFileName, "", "", vbNormalFocus
Loop Until bNext = 0
FindClose (hFile)
End sub不怕机子over的,就用吧,哈哈~~如果有100个文件,就打开100个,嘿嘿