这是国外一个朋友提供的 Wimgapi.dll 在VB6下的声明和使用方法。
原文地址在
http://www.msfn.org/
VB6 CODE:
[code]
Option Explicit
Public Declare Function WIMApplyImage Lib "WIMGAPI.DLL" (ByVal hImage As Long,
ByVal lpszPath As String, ByVal dzApplyFlags As Long) As Boolean
Public Declare Function WIMCaptureImage Lib "WIMGAPI.DLL" (ByVal hwim As Long,
ByVal lpszPath As String, ByVal dwCaptureFlags As Long) As Boolean
Public Declare Function WIMCloseHandle Lib "WIMGAPI.DLL" (ByVal hObject As Long)
As Boolean
Public Declare Function WIMCreateFile Lib "WIMGAPI.DLL" (ByVal lpszWimPath As
String, ByVal dwDesiredAccess As Long, ByVal dwCreationDisposition As Long, ByVal
dwFlagsAndAttributes As Long, ByVal dwCompressionType As Long, ByRef CreationResult As Boolean) As Long
Public Declare Function WIMMountImage Lib "WIMGAPI.DLL" (ByVal lpszMountPath As
String, ByVal lpszWimFileName As String, ByVal dwImageIndex As Long, Optional ByVal
lpszTempPath As String) As Boolean
Public Declare Function WIMDeleteImage Lib "WIMGAPI.DLL" (ByVal hwim As Long,
ByVal dwApplyFlags As Integer) As Boolean
Public Declare Function WIMExportImage Lib "WIMGAPI.DLL" (ByVal hImage As Long,
ByVal hwim As Long, ByVal dwApplyFlags As Integer) As Boolean
Public Declare Function WIMGetImageCount Lib "WIMGAPI.DLL"
(ByVal hwim As Long) As Integer
Public Declare Function WIMGetMessagecallbackCount Lib "WIMGAPI.DLL"
(ByVal hwim As Long) As Integer
Public Declare Function WIMLoadImage Lib "WIMGAPI.DLL" (ByVal hwim As Long,
ByVal dwImageIndex As Integer) As Long
Public Declare Function WIMSetBootImage Lib "WIMGAPI.DLL" (ByVal hwim As Long,
ByVal dwImageIndex As Integer) As Boolean
Public Declare Function WIMSetReferenceFile Lib "WIMGAPI.DLL"
(ByVal hwim As Long, ByVal lpszPath As String, ByVal dwFlags As Integer)
As Boolean
Public Declare Function WIMSplitFile Lib "WIMGAPI.DLL" (ByVal hwim As Long,
ByVal lpszPartPath As String, ByRef pliPartSize As Integer, ByVal dwFlags As
Integer) As Boolean
Public Declare Function WIMUnmountImage Lib "WIMGAPI.DLL" (ByVal lpszMountPath As
String, ByVal lpszWimFileName As String, ByVal dwImageIndex As Integer, ByVal
bCommitChanges As Boolean) As Boolean
Public Declare Function WIMSetTemporaryPath Lib "WIMGAPI.DLL" (ByVal hwim As Long,
ByVal lpszPath As String) As Boolean
Public Declare Function WIMGetImageInformation Lib "WIMGAPI.DLL" (ByVal hImage As
Long, ByRef lplpvImageInfo As Long, ByRef lpcbImageInfo As Integer) As Boolean
Public Declare Function WIMSetImageInformation Lib "WIMGAPI.DLL" (ByVal hImage As
Long, ByVal lpvImageInfo As Long, ByVal cbImageInfo As Integer) As Boolean
Public Declare Function WIMMessageCallback Lib "WIMGAPI.DLL" (ByVal dwMessageId As
Integer, ByVal wParam As Long, ByVal lParam As Long, ByVal lpvUserData As Long) As
Integer
Public Declare Function WIMCopyFile Lib "WIMGAPI.DLL" (ByVal lpszExistingFileName
As String, ByVal lpszNewFileName As String, ByVal lpProgressRoutine As Any, ByVal
lpvData As Long, ByVal pbCancel As Boolean, ByVal dwCopyFlags As Integer) As Boolean
Public Const WIM_GENERIC_READ As Long = &H80000000
Public Const WIM_GENERIC_WRITE As Long = &H40000000
Public Const WIM_Create_NEW As Byte = &H1
Public Const WIM_Create_ALWAYS As Byte = &H2
Public Const WIM_OPEN_EXISTING As Byte = &H3
Public Const WIM_OPEN_ALWAYS As Byte = &H4
Public Const WIM_COMPRESS_NONE As Byte = 0
Public Const WIM_COMPRESS_XPRESS As Byte = 1
Public Const WIM_COMPRESS_LZX As Byte = 2
Public Const WIM_CreateD_NEW As Byte = 0
Public Const WIM_OPENED_EXISTING As Byte = 1
Public Const WIM_FLAG_RESERVED As Byte = &H1
Public Const WIM_FLAG_VERIFY As Byte = &H2
Public Const WIM_FLAG_INDEX As Byte = &H4
Public Const WIM_FLAG_NO_APPLY As Byte = &H8
Public Const WIM_FLAG_NO_DIRACL As Byte = &H10
Public Const WIM_FLAG_NO_FILEACL As Byte = &H20
Public Const WIM_FLAG_SHARE_WRITE As Byte = &H40
Public Const WIM_FLAG_FILEINFO As Byte = &H80
Public Const WIM_FLAG_NO_RP_FIX As Integer = &H100
Public Const WIM_REFERENCE_APPEND As Long = &H10000
Public Const WIM_REFERENCE_REPLACE As Long = &H20000
Public Const WIM_EXPORT_ALLOW_DUPLICATES As Byte = &H1
Public Const WIM_EXPORT_ONLY_RESOURCES As Byte = &H2
Public Const WIM_EXPORT_ONLY_METADATA As Byte = &H4
Public Const INVALID_CALLBACK_VALUE As Long = &HFFFFFFFF
Public Const WIM_COPY_FILE_RETRY As Long = &H1000000
Public Const WIM_MSG_SUCCESS As Byte = 0&
Public Const WIM_MSG_DONE As Long = &HFFFFFFF0
Public Const WIM_MSG_SKIP_ERROR As Long = &HFFFFFFFE
Public Const WIM_MSG_ABORT_IMAGE As Long = &HFFFFFFFF
Public Const WIM_ATTRIBUTE_NORMAL As Byte = &H0
Public Const WIM_ATTRIBUTE_RESOURCE_ONLY As Byte = &H1
Public Const WIM_ATTRIBUTE_METADATA_ONLY As Byte = &H2
Public Const WIM_ATTRIBUTE_VERIFY_DATA As Byte = &H4
Public Const WIM_ATTRIBUTE_RP_FIX As Byte = &H8
Public Const WIM_ATTRIBUTE_SPANNED As Byte = &H10
Public Const WIM_ATTRIBUTE_READONLY As Byte = &H20
[/code]
Delete
CODE
[code]lHandle = WIMCreateFile(ConvertToUniCode("Path_To_Wim"), WIM_GENERIC_WRITE, WIM_OPEN_EXISTING, WIM_FLAG_SHARE_WRITE, WIM_COMPRESS_XPRESS, 0)
WIMSetTemporaryPath(lHandle, ConvertToUniCode(oWSHShell.ExpandEnvironmentStrings("%Temp%")))
WIMDeleteImage(lHandle, cmbImageNumber.Text)
WIMCloseHandle (lHandle)
[/code]
Mount
CODE
[code]WIMMountImage(ConvertToUniCode("Path_To_Mount"), ConvertToUniCode("Path_To_Wim"), ImageNumber, ConvertToUniCode("Path_To_Temp"))
[/code]
Unmount
CODE
[code]
WIMUnmountImage(ConvertToUniCode("Path_To_Mount"), ConvertToUniCode("Path_To_Wim"), ImageNumber, True/FalseSaveChanges))
[/code]
Get Number of Images in WIM file
CODE
[code]
lHandle = WIMCreateFile(ConvertToUniCode("Path_To_Wim"), WIM_GENERIC_WRITE, WIM_OPEN_EXISTING, WIM_FLAG_SHARE_WRITE, WIM_COMPRESS_XPRESS, 0)
iNumberOfImages = WIMGetImageCount(lHandle)
WIMCloseHandle (lHandle)[/code]

2007.07.11 18:12 五 says:
你够沉默了,东西还没有做出就绽放美丽了!
这样的源码网上随便都能找到。你那个所谓GUI也不是调用WIMGAPI中的函数,而是直接调用 ImageX 。
2007.07.12 08:44 xuhel says:
我早在2007-02-02写的“ImageX GUI”这篇日志中的第一句话就有说明了的,“ImageX 是Windows AIK 工具的命令行程序,没有窗口界面,为了更方便实用,所以我就写了个图形界面的Shell程序。”,而且我和我的一个朋友是第一个写出ImageX 的图形界面的Shell程序的人。你可以不用,请不要诋毁我们!据我所知现在可能在国内除了我们只有无忧启动论坛的老九的WIMtools ,这两个工具,后者是使用API来实现GUI的,照你的话说,那么是要不是用API来实现GUI的GUI程序就不叫GUI程序咯!
2007.07.12 19:24 五 says:
问题是你帖出的API在你的GUI中根本没有用上,误导人!
别人以为你的GUI是通过这些API来工作的,你自己也有虚吹的成份!
2007.07.13 09:05 xuhel says:
这个问题我早在远景上就申明了的:“为了更方便使用,所以我就写了个图形界面的Shell程序”
是你自己理解错误,这与我无关。
2007.07.13 18:57 phantom says:
@五:人家早就说明了是Shell程序了的,你干嘛还究着不放呢,这就是你的不对了。Shell是指命令行的外壳啊!楼主是把代码公布了的,什么误导别人哦,只要会点编程的人一看代码就懂了,你才误导别人呢!