MdFile.bas
上传用户:hyb6888
上传日期:2016-01-24
资源大小:5186k
文件大小:5k
源码类别:

输入法编程

开发平台:

Visual C++

  1. Attribute VB_Name = "MdFile"
  2. Option Explicit
  3. Private Declare Function SHGetPathFromIDList Lib "shell32" (ByVal pidList As Long, ByVal lpBuffer As String) As Long
  4. Private Declare Function SHBrowseForFolder Lib "shell32" (lpbi As BROWSEINFO) As Long
  5. Private Const BIF_RETURNONLYFSDIRS = &H1
  6. Private Const BIF_NEWDIALOGSTYLE = &H40
  7. Private Type BROWSEINFO
  8.     hOwner As Long
  9.     pidlRoot As Long
  10.     pszDisplayName As String
  11.     lpszTitle As String
  12.     ulFlags As Long
  13.     lpfn As Long
  14.     lParam As Long
  15.     iImage As Long
  16. End Type
  17. Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
  18. Private Type OPENFILENAME
  19.     lStructSize As Long
  20.     hwndOwner As Long
  21.     hInstance As Long
  22.     lpstrFilter As String
  23.     lpstrCustomFilter As String
  24.     nMaxCustFilter As Long
  25.     nFilterIndex As Long
  26.     lpstrFile As String
  27.     nMaxFile As Long
  28.     lpstrFileTitle As String
  29.     nMaxFileTitle As Long
  30.     lpstrInitialDir As String
  31.     lpstrTitle As String
  32.     flags As Long
  33.     nFileOffset As Integer
  34.     nFileExtension As Integer
  35.     lpstrDefExt As String
  36.     lCustData As Long
  37.     lpfnHook As Long
  38.     lpTemplateName As String
  39. End Type
  40. Private Const OFN_ALLOWMULTISELECT = &H200
  41. Private Const OFN_EXPLORER = &H80000
  42. Private Const OFN_FILEMUSTEXIST = &H1000
  43. Private Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
  44. Private Declare Function GetWindowsDirectory Lib "kernel32" Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
  45. Public Declare Function CopyFile Lib "kernel32" Alias "CopyFileA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal bFailIfExists As Long) As Long
  46. Public 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
  47. '浏览文件夹函数
  48. Public Function BrowseFolder(ByVal hwnd As Long, ByVal Title As String) As String
  49.     Dim bi As BROWSEINFO
  50.     Dim rtn, pid As Long
  51.     Dim path As String * 512
  52.     Dim pos As Integer
  53.     With bi
  54.         .hOwner = hwnd
  55.         .ulFlags = BIF_RETURNONLYFSDIRS Or BIF_NEWDIALOGSTYLE
  56.         .lpszTitle = Title
  57.     End With
  58.     pid = SHBrowseForFolder(bi)
  59.     rtn = SHGetPathFromIDList(ByVal pid, ByVal path)
  60.     If rtn Then
  61.         pos = InStr(path, Chr(0))
  62.         BrowseFolder = Left(path, pos - 1)
  63.     Else
  64.         BrowseFolder = ""
  65.     End If
  66. End Function
  67. '不用控件实现打开文件对话框
  68. Public Function OpenDlg(hwnd As Long, filter As String, FilterIndex As Integer) As String
  69.     Dim pOpenfilename As OPENFILENAME
  70.     Dim dd As Long, FileName As String, pos As Integer
  71.     With pOpenfilename
  72.         .flags = OFN_ALLOWMULTISELECT Or OFN_EXPLORER Or OFN_FILEMUSTEXIST
  73.         .lpstrTitle = "打开文件"
  74.         .hwndOwner = hwnd
  75.         .hInstance = App.hInstance
  76.         .lpstrFilter = filter
  77.         .lpstrInitialDir = App.path
  78.         .nFilterIndex = FilterIndex
  79.         .lpstrFile = Space(254)
  80.         .nMaxFile = 255
  81.         .lpstrFileTitle = .lpstrFile
  82.         .nMaxFileTitle = 255
  83.         .lStructSize = Len(pOpenfilename)
  84.     End With
  85.     dd = GetOpenFileName(pOpenfilename)
  86.     If dd Then
  87.         pos = InStrRev(pOpenfilename.lpstrFile, vbNullChar)
  88.        FileName = Left(pOpenfilename.lpstrFile, pos - 2)
  89.     Else
  90.         FileName = ""
  91.     End If
  92.     OpenDlg = FileName
  93. End Function
  94. '取得系统文件夹
  95. Public Function GetSystemDir() As String
  96.     Dim nSize As Long
  97.     Dim tmp As String
  98.     tmp = Space$(256)
  99.     nSize = Len(tmp)
  100.     Call GetSystemDirectory(tmp, nSize)
  101.     If Right(TrimNull(tmp), 1) <> "" Then
  102.        GetSystemDir = TrimNull(tmp) + ""
  103.     Else: GetSystemDir = TrimNull(tmp)
  104.     End If
  105.     
  106. End Function
  107. '取得windows文件夹
  108. Public Function GetWinDir() As String
  109.     Dim nSize As Long
  110.     Dim tmp As String
  111.     tmp = Space$(256)
  112.     nSize = Len(tmp)
  113.     Call GetWindowsDirectory(tmp, nSize)
  114.     
  115.     If Right(TrimNull(tmp), 1) <> "" Then
  116.       GetWinDir = TrimNull(tmp) + ""
  117.     Else: GetWinDir = TrimNull(tmp)
  118.     End If
  119.     
  120. End Function
  121. '删除VBNullchar字符
  122. Private Function TrimNull(item As String)
  123.     Dim pos As Integer
  124.     pos = InStr(item, Chr$(0))
  125.     If pos Then
  126.           TrimNull = Left$(item, pos - 1)
  127.     Else: TrimNull = item
  128.     End If
  129.   
  130. End Function
  131. '返回文件路径,包含""
  132. Public Function ExtractFilePath(ByVal FileName As String) As String
  133.     Dim i As Integer
  134.     i = InStrRev(FileName, "")
  135.     ExtractFilePath = Left(FileName, i)
  136. End Function
  137. '从全路径中返回文件名,包含扩展名
  138. Public Function ExtractFileName(ByVal FileName As String) As String
  139.     Dim x
  140.     x = Split(FileName, "")
  141.     ExtractFileName = x(UBound(x))
  142. End Function