データ圧縮ツール「縮丸」 プログラム組み込みに関する情報(Windows版)
Visual Basic版サンプルプログラムダウンロード(自己解凍型ファイル:191KB)
Visual C++版サンプルプログラムダウンロード(自己解凍型ファイル:272KB)
縮丸V5(Windows版)ヘッダーファイルのサンプル(dcom32l.h)
※API宣言に「extern "C"」の属性を追記して下さい。
| 縮丸V5(Windows版)ヘッダーファイルサンプル |
|---|
#ifdef _WIN32 #define DllImport __declspec( dllimport ) #define DllExport __declspec( dllexport ) #else #ifdef _DOS #define DllImport #define DllExport #else #define DllImport #define DllExport __export #endif #endif /* 圧縮/解凍エンジン */ extern "C" int blend(int); extern "C" DWORD fldc3(int); extern "C" DWORD slca(int); extern "C" DWORD batch_fldc3(int); /* 共通ファイルヘッダー */ typedef struct _stCommonFileHeader { BYTE bEncodeType; /* 符号化タイプ:(上位4ビット)圧縮形式,(下位4ビット)機能種別*/ BYTE bVersion; /* 方式版数 */ BYTE bFileType; /* ファイルタイプ */ BYTE bReserve[2]; /* 予備 */ } stCommonFileHeader; /* 書庫ファイルヘッダー */ typedef struct _stArchiveFileHeader { stCommonFileHeader h; WORD wFileCount; /* 書庫中のファイルの個数 */ } stArchiveFileHeader; /* 新共通ファイルヘッダー */ typedef struct _stCommonFileHeader2 { BYTE bEncodeType2; /* 符号化タイプ:(上位4ビット)圧縮形式、(下位4ビット)機能種別 */ BYTE bVersion2; /* 方式版数 */ BYTE bFileType2; /* ファイルタイプ */ BYTE bReserve2[5]; /* 予備 */ } stCommonFileHeader2; /* 新書庫ファイルヘッダー */ typedef struct _stArchiveFileHeader2 { stCommonFileHeader2 h2; LONG wFileCount2; /* 書庫中のファイルの個数 */ struct { /* 日付時間 */ BYTE cYear; /* 年(西暦-1900) */ BYTE cMonth; /* 月 */ BYTE cDay; /* 日 */ BYTE cHour; /* 時 */ BYTE cMinute; /* 分 */ BYTE cSecond; /* 秒 */ } ArcDate; BYTE bReserve3[54]; /* 予備 */ } stArchiveFileHeader2; /* バッチインターフェースへの対応 */ /* 拡張縮丸ヘッダー */ typedef struct _stExtHeader { char cDesc[2]; /* 識別子 */ char cReserver_1[8]; /* 予備 */ char cDataSet; /* 平文データセット編成 */ char cRecType; /* 平文レコード形式 */ char cBlockLength[2]; /* 平文ブロック長 */ char cRecLength[2]; /* 平文レコード長 */ char cDataSetName[44]; /* 平文データセット名 */ char cNumOfBlock[4]; /* 平文ブロック数 */ char cReserver_2[27]; /* 予備 */ } stExtHeader; typedef stExtHeader FAR *LPstExtHeader; #pragma pack(4) /* バッチインターフェースへの対応 VBインターフェース */ /* 拡張縮丸ヘッダー */ typedef struct _stExtHeaderVB { char cDesc[2]; /* 識別子 */ LONG cDataSet; /* 平文データセット編成 */ LONG cRecType; /* 平文レコード形式 */ LONG cBlockLength; /* 平文ブロック長 */ LONG cRecLength; /* 平文レコード長 */ char cDataSetName[44]; /* 平文データセット名 */ LONG cNumOfBlock; /* 平文ブロック数 */ } stExtHeaderVB; typedef stExtHeaderVB FAR *LPstExtHeaderVB; /* 単一ファイル操作 */ /* 圧縮 */ extern "C" DWORD DllExport WINAPI dcom_CompressFile(const HWND, LPCSTR, LPCSTR, const DWORD); extern "C" DWORD DllExport WINAPI dcom_CompressFileExt(const HWND, LPCSTR, LPCSTR, const DWORD, LPstExtHeaderVB); /* 解凍 */ extern "C" DWORD DllExport WINAPI dcom_ExtractFile(const HWND, LPCSTR, LPCSTR, const DWORD); extern "C" DWORD DllExport WINAPI dcom_ExtractFileExt(const HWND, LPCSTR, LPCSTR, const DWORD, LPstExtHeaderVB); extern "C" DWORD DllExport WINAPI dcom_GetFileEncodeType(LPCSTR); //#pragma pack(4) /* 書庫の中の圧縮ファイル情報 */ typedef struct _stCompressedFileInfo { BYTE bDeleteFlg; /* 削除フラグ */ WORD wFileNameSize; char szFileName[FILENAME_MAX+1]; /* ファイル名 */ DWORD dwCompressedSize; /* 圧縮ファイル長 */ DWORD dwOriginalSize; /* 元ファイル長 */ struct { /* 日付時間 */ BYTE cYear; /* 年(西暦-1900)*/ BYTE cMonth; /* 月 */ BYTE cDay; /* 日 */ BYTE cHour; /* 時 */ BYTE cMinute; /* 分 */ BYTE cSecond; /* 秒 */ }Date; BYTE bAttribute; /* 属性 */ LONG lFilePointer; /* 圧縮ファイルの書庫の中での格納位置 */ _int64 dwCompressedSize2; /* 圧縮ファイル長 int64 */ _int64 dwOriginalSize2; /* 元ファイル長 int64 */ LONG lFilePointerH; /* 圧縮ファイルの書庫の中での格納位置 High */ char hdFlg[4]; /* ファイルヘッダー識別子 */ BYTE platformFlg; /* プラットフォーム識別子 */ BYTE charcodeFlg; /* 文字コード識別 */ char accsessFlg[2]; /* アクセス権限 */ BYTE DataLengType; /* データ長タイプ */ } stCompressedFileInfo; typedef stCompressedFileInfo FAR *LPstCompressedFileInfo; /* 書庫コントロール領域 */ typedef struct _stArchiveControl { HANDLE ArcFileHandle; BYTE bCmpEngine; LONG lCurrentFilePointer; WORD wFileCount; WORD wIndex; BOOL bAllocated; stCompressedFileInfo *FileInfoTable; LONG lCurrentFilePointerH; LONG wFileCount2; } stArchiveControl; typedef stArchiveControl FAR *LPstArchiveControl; typedef LPstArchiveControl HARC; /* 書庫の操作 */ /* 書庫オープン */ extern "C" HARC DllExport WINAPI dcom_OpenArchive(const HWND, LPCSTR, const DWORD, LPDWORD); extern "C" HARC DllExport WINAPI dcom2_OpenArchive(const HWND, LPCSTR, const DWORD, LPDWORD); extern "C" DWORD DllExport WINAPI dcom_ArchiveCheck(const HWND, LPCSTR); /* 書庫クローズ */ extern "C" DWORD DllExport WINAPI dcom_CloseArchive(HARC); extern "C" DWORD DllExport WINAPI dcom2_CloseArchive(HARC); /* ファイル検索1回目 */ extern "C" DWORD DllExport WINAPI dcom_FindFirst(HARC, LPCSTR, LPstCompressedFileInfo); extern "C" DWORD DllExport WINAPI dcom2_FindFirst(HARC, LPCSTR, LPstCompressedFileInfo); /* ファイル検索2回以降 */ extern "C" DWORD DllExport WINAPI dcom_FindNext(HARC, LPstCompressedFileInfo); extern "C" DWORD DllExport WINAPI dcom2_FindNext(HARC, LPstCompressedFileInfo); /* 書庫へのファイルの追加(圧縮) */ extern "C" DWORD DllExport WINAPI dcom_CompressToArchive(const HWND, HARC, LPCSTR, const DWORD); extern "C" DWORD DllExport WINAPI dcom2_CompressToArchive(const HWND, HARC, LPCSTR, const DWORD); /* 書庫からのファイルの解凍*/ extern "C" DWORD DllExport WINAPI dcom_ExtractFromArchiveByName(const HWND, HARC, LPCSTR, LPCSTR, const DWORD); extern "C" DWORD DllExport WINAPI dcom2_ExtractFromArchiveByName(const HWND, HARC, LPCSTR, LPCSTR, const DWORD); /* 書庫からのファイルの解凍*/ extern "C" DWORD DllExport WINAPI dcom_ExtractFromArchiveByPointer(const HWND, HARC, const LONG, LPCSTR, const DWORD); extern "C" DWORD DllExport WINAPI dcom2_ExtractFromArchiveByPointer(const HWND, HARC, const LONG, LPCSTR, const DWORD); /* 書庫に入っているファイルの数 */ extern "C" DWORD DllExport WINAPI dcom_GetFileCount(HARC); extern "C" LONG DllExport WINAPI dcom2_GetFileCount(HARC); extern "C" DWORD DllExport WINAPI dcom_AllocFileInfoTable(HARC); extern "C" DWORD DllExport WINAPI dcom_FreeFileInfoTable(HARC); extern "C" DWORD DllExport WINAPI dcom_SortFileInfoTable(HARC, const DWORD, const DWORD); extern "C" DWORD DllExport WINAPI dcom2_AllocFileInfoTable(HARC); extern "C" DWORD DllExport WINAPI dcom2_FreeFileInfoTable(HARC); extern "C" DWORD DllExport WINAPI dcom2_SortFileInfoTable(HARC, const DWORD, const DWORD); /* 圧縮形式取得 */ extern "C" DWORD DllExport WINAPI dcom_GetEncodeType(HARC); extern "C" DWORD DllExport WINAPI dcom_DispErrMsg(const HWND, DWORD); extern "C" DWORD DllExport WINAPI dcom_ExtractShowDlg(const HWND); extern "C" DWORD DllExport WINAPI dcom_ExtractCloseDlg(void); /* メモリの圧縮/解凍 VBが呼び出すDLL */ extern "C" DWORD DllExport WINAPI dcom_ManMemory(LPCSTR, LPCSTR, DWORD, DWORD, const DWORD); /* メモリの圧縮/解凍 */ extern "C" DWORD DllExport WINAPI dcom_CompressMemory(LPBYTE, int, LPBYTE, int *, const DWORD); extern "C" DWORD DllExport WINAPI dcom_ExtractMemory(LPBYTE, int, LPBYTE, int *, const DWORD); /* ファイルの暗号化/復号 */ extern "C" DWORD DllExport WINAPI dcom2_CryptEncodeFile(const HWND, LPCSTR, LPCSTR, LPCSTR, const DWORD); extern "C" DWORD DllExport WINAPI dcom2_CryptDecodeFile(const HWND, LPCSTR, LPCSTR, LPCSTR, const DWORD); /* メモリの暗号化/復号 */ extern "C" DWORD DllExport WINAPI dcom_CryptEncodeMemory(LPBYTE, LPBYTE, UINT, LPCSTR, const DWORD); extern "C" DWORD DllExport WINAPI dcom_CryptDecodeMemory(LPBYTE, LPBYTE, UINT, LPCSTR, const DWORD); /* 暗号形式取得 */ extern "C" DWORD DllExport WINAPI dcom2_GetFileCryptType(LPCSTR); /* 暗号ライブラリ有無判定 */ extern "C" BOOL DllExport WINAPI dcom_IsCryptLibrary(const DWORD); /* ファイル機能種別取得 */ extern "C" DWORD DllExport WINAPI dcom_GetFileFunctionMode(LPCSTR); /* 書庫からファイルを削除 */ extern "C" DWORD DllExport WINAPI dcom2_DeleteFromArchiveByPointer(const HWND, HARC, const LONG, const LONG); /* 書庫の複写 */ extern "C" DWORD DllExport WINAPI dcom2_CopyArchive(const HWND, LPCSTR, LPCSTR, const DWORD); /* 書庫のファイルを更新(圧縮) */ extern "C" DWORD DllExport WINAPI dcom2_OverwriteCompressToArchive(const HWND, HARC, LPCSTR, const DWORD); /* ファイル上書きチェック */ extern "C" DWORD DllExport WINAPI dcom_CheckOverwriteFile(const HWND hwnd, LPCSTR lpszFileName, const DWORD dwMode); /* 削除中ダイアログを表示 */ extern "C" DWORD DllExport WINAPI dcom_ShowDeleteDlg(const HWND); /* 削除中ダイアログを消去 */ extern "C" DWORD DllExport WINAPI dcom_CloseDeleteDlg(void); /* メッセージテーブル構造体定義 */ typedef struct _stMsgTable { DWORD dwMsgCode; LPSTR lpszMsg; } stMsgTable; typedef stMsgTable FAR *LPstMsgTable; /* データの読み込みモード */ typedef enum _enInputMode { MEMORY_BUFFER, /* メモリバッファから */ FILE_EOF, /* ファイルから(EOFが終端) */ FILE_LENGTH /* ファイルから(長さ指定) */ } enInputMode; /* 圧縮/解凍処理時のファイル名をセット */ extern "C" DWORD DllExport WINAPI dcom_SetFileName(LPCSTR); /* レジスト関係 */ extern "C" long DllExport WINAPI RegCheckTrial(viod); /* 検索(正規表現)で使用したメモリの解放 */ extern "C" VOID re_free(VOID); |
