📄 unzipfile.c
字号:
#include <windows.h>
#include <tchar.h>
#include "../LiteUnzip.h"
// Where we store the pointers to LiteUnzip.dll's functions that we call
UnzipOpenFilePtr *lpUnzipOpenFile;
UnzipGetItemPtr *lpUnzipGetItem;
UnzipItemToFilePtr *lpUnzipItemToFile;
UnzipClosePtr *lpUnzipClose;
UnzipFormatMessagePtr *lpUnzipFormatMessage;
/*********************** show_errmsg() **********************
* Displays a messagebox for the passed OS error number.
*/
void show_errmsg(void)
{
TCHAR buffer[160];
buffer[0] = 0;
FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, 0, GetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), &buffer[0], 160, 0);
MessageBox(0, &buffer[0], _T("Error"), MB_OK);
}
/************************** main() *************************
* Program entry point.
*/
int main()
{
HMODULE unzipDll;
HUNZIP huz;
DWORD result;
// Open the LiteUnzip.DLL. Note: If LiteUnzip.dll is not placed in a path that can be found
// by this app, then LoadLibrary will fail. So, either copy LiteUnzip.dll to the same
// directory as this EXE, or to some directory that Windows is set to search.
if ((unzipDll = (HMODULE)LoadLibrary(_T("../LiteUnzip.dll"))))
{
// Get the addresses of 5 functions in LiteUnzip.dll -- UnzipOpenFile(), UnzipGetItem()
// UnzipItemToFile(), UnzipClose(), and UnzipFormatMessage.
lpUnzipOpenFile = (UnzipOpenFilePtr *)GetProcAddress(unzipDll, UNZIPOPENFILENAME);
lpUnzipGetItem = (UnzipGetItemPtr *)GetProcAddress(unzipDll, UNZIPGETITEMNAME);
lpUnzipItemToFile = (UnzipItemToFilePtr *)GetProcAddress(unzipDll, UNZIPITEMTOFILENAME);
lpUnzipClose = (UnzipClosePtr *)GetProcAddress(unzipDll, UNZIPCLOSENAME);
lpUnzipFormatMessage = (UnzipFormatMessagePtr *)GetProcAddress(unzipDll, UNZIPFORMATMESSAGENAME);
// Open a ZIP archive on disk named "test.zip".
if (!(result = lpUnzipOpenFile(&huz, _T("test.zip"), 0)))
{
ZIPENTRY ze;
DWORD numitems;
// Find out how many items are in the archive.
ze.Index = (DWORD)-1;
if ((result = lpUnzipGetItem(huz, &ze))) goto bad2;
numitems = ze.Index;
// Unzip each item, using the name stored (in the zip) for that item.
for (ze.Index = 0; ze.Index < numitems; ze.Index++)
{
if ((result = lpUnzipGetItem(huz, &ze)) || (result = lpUnzipItemToFile(huz, ze.Name, &ze)))
{
bad2: lpUnzipClose(huz);
goto bad;
}
}
// Done unzipping files, so close the ZIP archive.
lpUnzipClose(huz);
}
else
{
TCHAR msg[100];
bad: lpUnzipFormatMessage(result, msg, sizeof(msg));
MessageBox(0, &msg[0], _T("Error"), MB_OK);
}
// Free the LiteUnzip.DLL
FreeLibrary(unzipDll);
}
else
show_errmsg();
return(0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -