最近在研究wimgapi.dll函数,打算做一个GUI界面,不知道坛里有人在研究如何在DELPHI下实现吗?
这是我找到的一些wimgapi.dll函数的资料,但是不知道在DELPHI下如何运用。wimgapi.dll 中的 API 函数名:DllCanUnloadNow
DllMain
WIMApplyImage
WIMCaptureImage
WIMCloseHandle
WIMCopyFile
WIMCreateFile
WIMDeleteImage
WIMExportImage
WIMGetAttributes
WIMGetImageCount
WIMGetImageInformation
WIMGetMessageCallbackCount
WIMGetMountedImages
WIMInitFileIOCallbacks
WIMLoadImage
WIMMountImage
WIMRegisterMessageCallback
WIMSetBootImage
WIMSetFileIOCallbackTemporaryPath
WIMSetImageInformation
WIMSetReferenceFile
WIMSetTemporaryPath
WIMSplitFile
WIMUnmountImage
WIMUnregisterMessageCallback希望有大虾可以施以援手,谢谢!

解决方案 »

  1.   

    ///////////////////////////////////////////////////////
    //
    // WIMGAPI.DLL常用大部分函数的Delphi声明
    // 无忧启动论坛,远景论坛
    // 转载请注明出处,2007.06
    //
    ///////////////////////////////////////////////////////unit WIMGAPI;interfaceuses
      Windows, Messages;const
      WIMGAPIModuleName = 'WIMGAPI.DLL';  WIM_GENERIC_READ = GENERIC_READ;
      WIM_GENERIC_WRITE = GENERIC_WRITE;
      WIM_CREATE_NEW = CREATE_NEW;
      WIM_CREATE_ALWAYS = CREATE_ALWAYS;
      WIM_OPEN_EXISTING = OPEN_EXISTING;
      WIM_OPEN_ALWAYS = OPEN_ALWAYS;  WIM_COMPRESS_NONE = 0;
      WIM_COMPRESS_XPRESS = 1;
      WIM_COMPRESS_LZX = 2;  WIM_CREATED_NEW = 0;
      WIM_OPENED_EXISTING = 1;  WIM_FLAG_RESERVED = $00000001;
      WIM_FLAG_VERIFY = $00000002;
      WIM_FLAG_INDEX = $00000004;
      WIM_FLAG_NO_APPLY = $00000008;
      WIM_FLAG_NO_DIRACL = $00000010;
      WIM_FLAG_NO_FILEACL = $00000020;
      WIM_FLAG_SHARE_WRITE = $00000040;
      WIM_FLAG_FILEINFO = $00000080;
      WIM_FLAG_NO_RP_FIX = $00000100;  WIM_REFERENCE_APPEND = $00010000;
      WIM_REFERENCE_REPLACE = $00020000;
      WIM_EXPORT_ALLOW_DUPLICATES = $00000001;
      WIM_EXPORT_ONLY_RESOURCES = $00000002;
      WIM_EXPORT_ONLY_METADATA = $00000004;  INVALID_CALLBACK_VALUE = $FFFFFFFF;
      WIM_COPY_FILE_RETRY = $01000000;  WIM_MSG = WM_APP + $1476;
      WIM_MSG_TEXT = WIM_MSG + 1;
      WIM_MSG_PROGRESS = WIM_MSG + 2;
      WIM_MSG_PROCESS = WIM_MSG + 3;
      WIM_MSG_SCANNING = WIM_MSG + 4;
      WIM_MSG_SETRANGE = WIM_MSG + 5;
      WIM_MSG_SETPOS = WIM_MSG + 6;
      WIM_MSG_STEPIT = WIM_MSG + 7;
      WIM_MSG_COMPRESS = WIM_MSG + 8;
      WIM_MSG_ERROR = WIM_MSG + 9;
      WIM_MSG_ALIGNMENT = WIM_MSG + 10;
      WIM_MSG_RETRY = WIM_MSG + 11;
      WIM_MSG_SPLIT = WIM_MSG + 12;
      WIM_MSG_FILEINFO = WIM_MSG + 13;
      WIM_MSG_INFO = WIM_MSG + 14;
      WIM_MSG_WARNING = WIM_MSG + 15;
      WIM_MSG_CHK_PROCESS = WIM_MSG + 16;  WIM_MSG_SUCCESS = ERROR_SUCCESS;
      WIM_MSG_DONE = $FFFFFFF0;
      WIM_MSG_SKIP_ERROR = $FFFFFFFE;
      WIM_MSG_ABORT_IMAGE = $FFFFFFFF;
      WIM_ATTRIBUTE_NORMAL = $00000000;
      WIM_ATTRIBUTE_RESOURCE_ONLY = $00000001;
      WIM_ATTRIBUTE_METADATA_ONLY = $00000002;
      WIM_ATTRIBUTE_VERIFY_DATA = $00000004;
      WIM_ATTRIBUTE_RP_FIX = $00000008;  WIM_ATTRIBUTE_SPANNED = $00000010;
      WIM_ATTRIBUTE_READONLY = $00000020;type
      //LPWIM_INFO = ^PWIM_INFO;
      PWIM_INFO = ^WIM_INFO;
      WIM_INFO_A = packed record
        WimPath: array<0..MAX_PATH - 1> of WideChar;
        Guid: TGUID;
        ImageCount: DWORD;
        CompressionType: DWORD;
        PartNumber: WORD;
        TotalParts: WORD;
        BootIndex: DWORD;
        WimAttributes: DWORD;
        WimFlagsAndAttr: DWORD;
      end;
      WIM_INFO = WIM_INFO_A;  //LPWIM_MOUNT_LIST = ^PWIM_MOUNT_LIST;
      PWIM_MOUNT_LIST = ^WIM_MOUNT_LIST;
      WIM_MOUNT_LIST_A = packed record
        WimPath: array<0..MAX_PATH - 1> of WideChar;
        MountPath: array<0..MAX_PATH - 1> of WideChar;
        ImageIndex: DWORD;
        MountedForRW: BOOL;
      end;
      WIM_MOUNT_LIST = WIM_MOUNT_LIST_A;  PLARGE_INTEGER = ^LARGE_INTEGER;function WIMApplyImage(hImage: HWND;
      pzPath: PWideChar;
      dwApplyFlags: DWORD): BOOL; stdcall; external WIMGAPIModuleName;function WIMCaptureImage(hWim: HWND;
      lpszCapturePath: PWideChar;
      dwCaptureFlags: DWORD): HWND; stdcall; external WIMGAPIModuleName;function WIMCloseHandle(hObject: HWND): BOOL; stdcall; external WIMGAPIModuleName;function WIMCopyFile(pszExistingFileName, pszNewFileName: PWideChar;
      pProgressRoutine, pvData, pbCancel: Pointer;
      dwCopyFlags: DWORD): BOOL; stdcall; external WIMGAPIModuleName;function WIMCreateFile(pzWimPath: PWideChar;
      dwDesiredAccess,
      dwCreationDisposition,
      dwFlagsAndAttributes,
      dwCompressionType: DWORD;
      pdwCreationResult: PDWORD): HWND; stdcall; external WIMGAPIModuleName;function WIMDeleteImage(hWim: HWND;
      dwImageIndex: DWORD): BOOL; stdcall; external WIMGAPIModuleName;function WIMExportImage(shImage, thWim: HWND;
      dwFlags: DWORD): BOOL; stdcall; external WIMGAPIModuleName;function WIMGetAttributes(hWim: HWND;
      lpcbImageInfo: PWIM_INFO;
      cbWimInfo: DWORD): BOOL; stdcall; external WIMGAPIModuleName;function WIMGetImageCount(hWim: HWND): DWORD; stdcall; external WIMGAPIModuleName;function WIMGetImageInformation(hImage: HWND;
      pvImageInfo: PDWORD;
      lpcbImageInfo: PDWORD): BOOL; stdcall; external WIMGAPIModuleName;function WIMGetMessageCallbackCount(hWim: HWND): DWORD; stdcall; external WIMGAPIModuleName;function WIMGetMountedImages(pMountList: PWIM_MOUNT_LIST;
      pcbBufferSize: PDWORD): BOOL; stdcall; external WIMGAPIModuleName;function WIMLoadImage(hWim: HWND;
      dwImageIndex: DWORD): HWND; stdcall; external WIMGAPIModuleName;function WIMMountImage(lpszMountPath, lpszWimFileName: PWideChar;
      dwImageIndex: DWORD;
      lpszTempPath: PWideChar): BOOL; stdcall; external WIMGAPIModuleName;function WIMRegisterMessageCallback(hWim: HWND;
      fpMessageProc, pvUserData: Pointer): DWORD; stdcall; external WIMGAPIModuleName;function WIMSetBootImage(hWim: HWND;
      dwImageIndex: DWORD): BOOL; stdcall; external WIMGAPIModuleName;function WIMSetImageInformation(hImage: HWND;
      pvImageInfo: Pointer;
      cbImageInfo: DWORD): BOOL; stdcall; external WIMGAPIModuleName;function WIMSetReferenceFile(hWim: HWND;
      pzPath: PWideChar;
      dwFlags: DWORD): BOOL; stdcall; external WIMGAPIModuleName;function WIMSetTemporaryPath(hWim: HWND;
      pzPath: PWideChar): BOOL; stdcall; external WIMGAPIModuleName;function WIMSplitFile(hWim: HWND;
      lpszPartPath: PWideChar;
      pliPartSize: PLARGE_INTEGER;
      dwFlags: DWORD): BOOL; stdcall; external WIMGAPIModuleName;function WIMUnmountImage(lpszMountPath, lpszWimFileName: PWideChar;
      dwImageIndex: DWORD;
      bCommitChanges: BOOL): BOOL; stdcall; external WIMGAPIModuleName;function WIMUnregisterMessageCallback(hWim: HWND;
      fpMessageProc: Pointer): BOOL; stdcall; external WIMGAPIModuleName;implementationend.
    ////////////////////////////////////////////////////
      

  2.   

    只用API写界面,这个在win32API核心详解已经介绍过了吧