找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 5208|回复: 0

【转帖】VB拷贝SAM文件(VB6.0)

[复制链接]

1214

主题

352

回帖

11

精华

管理员

菜鸟

积分
93755

贡献奖关注奖人气王精英奖乐于助人勋章

发表于 2009-2-3 12:54:27 | 显示全部楼层 |阅读模式
<table cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td>
<div style="TEXT-INDENT: 24px; WORD-WRAP: break-word; FONT-SIZE: 9pt; OVERFLOW: hidden; WORD-BREAK: break-all" id="textstyle_1">
<div class="msgheader">QUOTE:</div><div class="msgborder">
<p><font face="Verdana"><br/>'保存为frmMain.frm<br/><br/>VERSION 5.00<br/>Begin VB.Form frmMain <br/>&nbsp;&nbsp; BorderStyle&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; 1&nbsp; 'Fixed Single<br/>&nbsp;&nbsp; Caption&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; "磁盘文件复制"<br/>&nbsp;&nbsp; ClientHeight&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; 2745<br/>&nbsp;&nbsp; ClientLeft&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; 45<br/>&nbsp;&nbsp; ClientTop&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; 435<br/>&nbsp;&nbsp; ClientWidth&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; 5235<br/>&nbsp;&nbsp; LinkTopic&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; "Form1"<br/>&nbsp;&nbsp; LockControls&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; -1&nbsp; 'True<br/>&nbsp;&nbsp; MaxButton&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; 0&nbsp;&nbsp; 'False<br/>&nbsp;&nbsp; MinButton&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; 0&nbsp;&nbsp; 'False<br/>&nbsp;&nbsp; ScaleHeight&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; 2745<br/>&nbsp;&nbsp; ScaleWidth&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; 5235<br/>&nbsp;&nbsp; StartUpPosition =&nbsp;&nbsp; 2&nbsp; '屏幕中心<br/>&nbsp;&nbsp; Begin VB.CommandButton cmdExit <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Cancel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; -1&nbsp; 'True<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Caption&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; "退出"<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Height&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; 375<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Left&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; 3720<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TabIndex&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; 5<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Top&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; 1950<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Width&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; 1275<br/>&nbsp;&nbsp; End<br/>&nbsp;&nbsp; Begin VB.TextBox txtSource <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Height&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; 285<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Left&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; 1110<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TabIndex&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; 2<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Top&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; 450<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Width&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; 3945<br/>&nbsp;&nbsp; End<br/>&nbsp;&nbsp; Begin VB.TextBox txtPath <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Height&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; 255<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Left&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; 1110<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TabIndex&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; 1<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Top&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; 1260<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Width&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; 3945<br/>&nbsp;&nbsp; End<br/>&nbsp;&nbsp; Begin VB.CommandButton cmdCopy <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Caption&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; "复制"<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Height&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; 375<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Left&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; 1920<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TabIndex&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; 0<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Top&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; 1980<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Width&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; 1275<br/>&nbsp;&nbsp; End<br/>&nbsp;&nbsp; Begin VB.Label lblMsg <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AutoSize&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; -1&nbsp; 'True<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Caption&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; "目标路径:"<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Height&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; 180<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Index&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; 1<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Left&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; 180<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TabIndex&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; 4<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Top&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; 1320<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Width&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; 810<br/>&nbsp;&nbsp; End<br/>&nbsp;&nbsp; Begin VB.Label lblMsg <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AutoSize&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; -1&nbsp; 'True<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Caption&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; "源路径:"<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Height&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; 180<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Index&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; 0<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Left&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; 180<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TabIndex&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; 3<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Top&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; 510<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Width&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; 630<br/>&nbsp;&nbsp; End<br/>End<br/>Attribute VB_Name = "frmMain"<br/>Attribute VB_GlobalNameSpace = False<br/>Attribute VB_Creatable = False<br/>Attribute VB_PredeclaredId = True<br/>Attribute VB_Exposed = False<br/>Private Declare Function DeviceIoControl Lib "kernel32" (ByVal hDevice As Long, ByVal dwIoControlCode As Long, lpInBuffer As Any, ByVal nInBufferSize As Long, lpOutBuffer As Any, ByVal nOutBufferSize As Long, lpBytesReturned As Long, lpOverlapped As Any) As Long<br/>Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, lpSecurityAttributes As Any, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long<br/>Private Declare Function WriteFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToWrite As Long, lpNumberOfBytesWritten As Long, lpOverlapped As Any) As Long<br/>Private Declare Function SetFilePointer Lib "kernel32" (ByVal hFile As Long, ByVal lDistanceToMove As Long, lpDistanceToMoveHigh As Long, ByVal dwMoveMethod As Long) As Long<br/>Private Declare Function ReadFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToRead As Long, lpNumberOfBytesRead As Long, lpOverlapped As Any) As Long<br/>Private Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long<br/>Private Declare Function GetDiskFreeSpace Lib "kernel32" Alias "GetDiskFreeSpaceA" (ByVal lpRootPathName As String, lpSectorsPerCluster As Long, lpBytesPerSector As Long, lpNumberOfFreeClusters As Long, lpTotalNumberOfClusters As Long) As Long<br/>Private Declare Function GetFileSize Lib "kernel32" (ByVal hFile As Long, lpFileSizeHigh As Long) As Long<br/>Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)<br/>Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long<br/>Private Const GENERIC_READ = &amp;H80000000<br/>Private Const FILE_SHARE_READ = &amp;H1<br/>Private Const FILE_SHARE_WRITE = &amp;H2<br/>Private Const OPEN_EXISTING = 3<br/>Private Const INVALID_HANDLE_VALUE = -1<br/>Private Const GENERIC_WRITE = &amp;H40000000<br/>Private Const OPEN_ALWAYS = 4<br/>Private Const FILE_READ_ATTRIBUTES = (&amp;H80)<br/>Private Const FSCTL_GET_RETRIEVAL_POINTERS = 589939</font></p>
<p><font face="Verdana">Private Type RETRIEVAL_POINTERS_BUFFER<br/>&nbsp;&nbsp;&nbsp; dwExtentCount As Long<br/>&nbsp;&nbsp;&nbsp; bytStartingVcn(7) As Byte '这些都可以使用LARGE_INTEGER类型代替<br/>&nbsp;&nbsp;&nbsp; bytNextVcn(7) As Byte '这些都可以使用LARGE_INTEGER类型代替<br/>&nbsp;&nbsp;&nbsp; bytLcn(7) As Byte '这些都可以使用LARGE_INTEGER类型代替<br/>&nbsp;&nbsp;&nbsp; lngTmp As Long<br/>End Type</font></p>
<p><font face="Verdana">Private Type LARGE_INTEGER<br/>&nbsp;&nbsp;&nbsp; LowPart As Long<br/>&nbsp;&nbsp;&nbsp; HighPart As Long<br/>End Type</font></p>
<p><font face="Verdana">Private Sub cmdCopy_Click()<br/>&nbsp;&nbsp;&nbsp; Dim strSamPath As String<br/>'&nbsp;&nbsp;&nbsp; strSamPath = GetSystemPath &amp; "\Config\Sam"<br/>&nbsp;&nbsp;&nbsp; strSamPath = txtSource.Text<br/>&nbsp;&nbsp;&nbsp; If CopySamFile(strSamPath, txtPath.Text) Then<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MsgBox "复制完毕!!", vbInformation, "提示"<br/>&nbsp;&nbsp;&nbsp; Else<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MsgBox "复制错误!!", vbCritical, "提示"<br/>&nbsp;&nbsp;&nbsp; End If<br/>End Sub</font></p>
<p><font face="Verdana">'获取系统目录路径<br/>Private Function GetSystemPath() As String<br/>&nbsp;&nbsp;&nbsp; Dim strTmp As String<br/>&nbsp;&nbsp;&nbsp; strTmp = String(260, Chr(0))<br/>&nbsp;&nbsp;&nbsp; GetSystemDirectory strTmp, 260<br/>&nbsp;&nbsp;&nbsp; strTmp = Left(strTmp, InStr(strTmp, Chr(0)) - 1)<br/>&nbsp;&nbsp;&nbsp; GetSystemPath = strTmp<br/>End Function</font></p>
<p><font face="Verdana">Private Function GetFileClusters(ByVal strFileName As String, ByVal lngClusterSize As Long, lngClCount As Long, lngFileSize As Long) As Long()<br/>&nbsp;&nbsp;&nbsp; Dim hFile As Long<br/>&nbsp;&nbsp;&nbsp; Dim lngOutSize As Long<br/>&nbsp;&nbsp;&nbsp; Dim lngBytes As Long, lngCls As Long, lngCnCount As Long, r As Long, lngCount As Long, i As Long, j As Long<br/>&nbsp;&nbsp;&nbsp; Dim lngClusters() As Long<br/>&nbsp;&nbsp;&nbsp; Dim bytInBuf(7) As Byte<br/>&nbsp;&nbsp;&nbsp; Dim objOutBuf As RETRIEVAL_POINTERS_BUFFER<br/>&nbsp;&nbsp;&nbsp; Dim bytOutBuff() As Byte<br/>&nbsp;&nbsp;&nbsp; hFile = CreateFile(strFileName, FILE_READ_ATTRIBUTES, _<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FILE_SHARE_READ Or FILE_SHARE_WRITE Or FILE_SHARE_DELETE, _<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ByVal 0&amp;, OPEN_EXISTING, 0, 0)<br/>&nbsp;&nbsp;&nbsp; If hFile &lt;&gt; INVALID_HANDLE_VALUE Then<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lngFileSize = GetFileSize(hFile, 0)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lngOutSize = 32 + (lngFileSize / lngClusterSize) * 16<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ReDim bytOutBuff(lngOutSize - 1)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If DeviceIoControl(hFile, FSCTL_GET_RETRIEVAL_POINTERS, bytInBuf(0), 8, bytOutBuff(0), lngOutSize, lngBytes, ByVal 0&amp;) Then<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lngClCount = (lngFileSize + lngClusterSize - 1) \ lngClusterSize<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CopyMemory objOutBuf, bytOutBuff(0), 32<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; For r = 0 To objOutBuf.dwExtentCount - 1<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CopyMemory j, objOutBuf.bytLcn(4), 4<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; For i = lngClCount To 0 Step -1<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ReDim Preserve lngClusters(0 To lngCls)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lngClusters(lngCls) = j<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; j = j + 1<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lngCls = lngCls + 1<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Next<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Next<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CloseHandle hFile<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GetFileClusters = lngClusters<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End If<br/>&nbsp;&nbsp;&nbsp; End If<br/>End Function</font></p>
<p><font face="Verdana">Private Function CopySamFile(ByVal strSamPath As String, ByVal strDestPath As String) As Boolean<br/>&nbsp;&nbsp;&nbsp; Dim lngClusterSize As Long<br/>&nbsp;&nbsp;&nbsp; Dim lngClusters() As Long<br/>&nbsp;&nbsp;&nbsp; Dim lngClCount As Long, lngFileSize As Long, lngBytes As Long<br/>&nbsp;&nbsp;&nbsp; Dim hDrive As Long, hFile As Long<br/>&nbsp;&nbsp;&nbsp; Dim lngSecPerCl As Long, lngBtPerSec As Long, r As Long<br/>&nbsp;&nbsp;&nbsp; Dim curTmp As Currency<br/>&nbsp;&nbsp;&nbsp; Dim ligNo As LARGE_INTEGER<br/>&nbsp;&nbsp;&nbsp; Dim bytBuff() As Byte<br/>&nbsp;&nbsp;&nbsp; GetDiskFreeSpace Left(strSamPath, 2), lngSecPerCl, lngBtPerSec, ByVal 0&amp;, ByVal 0&amp;<br/>&nbsp;&nbsp;&nbsp; lngClusterSize = lngSecPerCl * lngBtPerSec<br/>&nbsp;&nbsp;&nbsp; On Error GoTo ErrHandle<br/>&nbsp;&nbsp;&nbsp; lngClusters = GetFileClusters(strSamPath, lngClusterSize, lngClCount, lngFileSize)<br/>&nbsp;&nbsp;&nbsp; hDrive = CreateFile("\\.\" &amp; Left(strSamPath, 2), GENERIC_READ, FILE_SHARE_READ Or FILE_SHARE_WRITE, ByVal 0&amp;, OPEN_EXISTING, 0, 0)<br/>&nbsp;&nbsp;&nbsp; If hDrive &lt;&gt; INVALID_HANDLE_VALUE Then<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hFile = CreateFile(strDestPath, GENERIC_WRITE, 0, ByVal 0, OPEN_ALWAYS, 0, 0)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If hFile &lt;&gt; INVALID_HANDLE_VALUE Then<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; For r = 0 To lngClCount - 1<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; curTmp = CCur(lngClusterSize) * CCur(lngClusters(r)) / 10000<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CopyMemory ligNo, curTmp, Len(ligNo)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Call SetFilePointer(hDrive, ligNo.LowPart, ligNo.HighPart, 0)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If lngFileSize &lt; lngClusterSize Then<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ReDim bytBuff(lngFileSize - 1)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Call ReadFile(hDrive, bytBuff(0), lngFileSize, lngBytes, ByVal 0&amp;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Call WriteFile(hFile, bytBuff(0), lngFileSize, lngBytes, ByVal 0&amp;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Exit For<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Else<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ReDim bytBuff(lngClusterSize - 1)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End If<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Call ReadFile(hDrive, bytBuff(0), lngClusterSize, lngBytes, ByVal 0&amp;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Call WriteFile(hFile, bytBuff(0), lngClusterSize, lngBytes, ByVal 0&amp;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lngFileSize = lngFileSize - lngBytes<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Debug.Print ligNo.LowPart; ligNo.HighPart<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Next<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End If<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CloseHandle hFile<br/>&nbsp;&nbsp;&nbsp; End If<br/>&nbsp;&nbsp;&nbsp; CloseHandle hDrive<br/>&nbsp;&nbsp;&nbsp; CopySamFile = True<br/>&nbsp;&nbsp;&nbsp; Exit Function<br/>ErrHandle:<br/>&nbsp;&nbsp;&nbsp; If hDrive &lt;&gt; -1 Then CloseHandle hDrive<br/>&nbsp;&nbsp;&nbsp; If hFile &lt;&gt; -1 Then CloseHandle hFile<br/>End Function</font></p>
<p><font face="Verdana">Private Sub cmdExit_Click()<br/>&nbsp;&nbsp;&nbsp; Unload Me<br/>End Sub</font></p></div></div>
<div style="TEXT-INDENT: 24px; WORD-WRAP: break-word; FONT-SIZE: 9pt; OVERFLOW: hidden; WORD-BREAK: break-all">来源:<font face="Verdana">http://www.superkill.cn/bbs/dispbbs.asp?boardid=2&amp;Id=5</font></div></td></tr></tbody></table>
【VB】QQ群:1422505加的请打上VB好友
【易语言】QQ群:9531809  或 177048
【FOXPRO】QQ群:6580324  或 33659603
【C/C++/VC】QQ群:3777552
【NiceBasic】QQ群:3703755
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

快速回复 返回顶部 返回列表