Home > ソフトウェア > Ashley > Ashley130.zip/Ashley130.exe > Src > UnRarFile.h
//UnRarFile.h /*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*# Ashley Ver.1.30 Coded by x@rgs This code is released under NYSL Version 0.9982 See NYSL_withfaq.TXT for further details. Ashleyは、アップローダからダウンロードしたZIPやRAR等のファイル名を元に戻すソフトです。 #*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*/ #ifndef UNRARFILE_H #define UNRARFILE_H #include"third-party/unrar/unrar.h" typedef const RARHeaderDataEx* LPCRARHeaderDataEx; typedef const RAROpenArchiveDataEx* LPCRAROpenArchiveDataEx; typedef HANDLE(WINAPI*PRAROPENARCHIVEEX)(struct RAROpenArchiveDataEx *ArchiveData); typedef int(WINAPI*PRARCLOSEARCHIVE)(HANDLE hArcData); typedef int(WINAPI*PRARREADHEADEREX)(HANDLE hArcData,struct RARHeaderDataEx *HeaderData); typedef int(WINAPI*PRARPROCESSFILE)(HANDLE hArcData,int Operation,char *DestPath,char *DestName); typedef int(WINAPI*PRARPROCESSFILEW)(HANDLE hArcData,int Operation,wchar_t *DestPath,wchar_t *DestName); typedef void(WINAPI*PRARSETCALLBACK)(HANDLE hArcData,UNRARCALLBACK Callback,LPARAM UserData); typedef void(WINAPI*PRARSETPASSWORD)(HANDLE hArcData,char *Password); class CUnRar{ public: CUnRar(); virtual ~CUnRar(); public: //初期化 void Initialize(); //DLLをロード void LoadDll(); //DLLをアンロード void UnloadDll(); //rarファイルを開く bool OpenFile(LPCTSTR lpFile,bool bListingOnly=true,char* cmtBuf=NULL,UINT cmtBufSize=0,char* szPassword=NULL); //rarファイルを閉じる bool CloseFile(); //rarファイル内のファイルの情報を読み込む bool ReadFileInfo(); //RAR_OM_LISTの場合、次のファイル位置までスキップ //RAR_OM_EXTRACTの場合、書庫テストを行う virtual bool ProcessFile(); //次のファイル位置までスキップ virtual bool SkipFile(); virtual bool SkipFiles(UINT64 ui64); //コールバック関数 virtual int CallbackProc(UINT uMsg,LPARAM UserData,LPARAM lParam1,LPARAM lParam2); //ストリームに出力 virtual int ProcessFileData(LPBYTE lpBuffer,ULONG uiBufferSize); //メンバ変数に代入 void SetIStream(IStream* pIs); //DLLが使用可能な状況であるか否か inline bool CheckReady(){return bDllReady;} //rarファイルの情報を取得 inline LPCRAROpenArchiveDataEx GetArchiveInfo(){return &m_rOpenArchiveDataEx;} //rarファイル内のファイルの情報を取得 inline LPCRARHeaderDataEx GetFileInfo(){return &m_rHeaderDataEx;} //パスワードを設定 inline void SetPassword(char* szPassword){RARSetPassword(m_hArc,szPassword);} //エラーを取得 inline int GetLastError(){return m_iResult;} //ファイル名を取得 //UNICODE以外でビルドされる事を想定していないのでコメントアウト inline LPCTSTR GetFileName(){ //#ifdef UNICODE return (LPCTSTR)(GetFileInfo()->FileNameW); //#else // return (LPCTSTR)CUnRar::GetItemInfo()->FileName; //#endif } //Volume attribute (archive volume) inline bool IsArchiveVolume(){return (bool)(m_rOpenArchiveDataEx.Flags&0x0001);} //Archive lock attribute //inline bool IsArchiveComment(){return (bool)(m_rOpenArchiveDataEx.Flags&0x0002);} //Archive comment present //inline bool IsArchiveLocked(){return (bool)(m_rOpenArchiveDataEx.Flags&0x0004);} //Solid attribute inline bool IsArchiveSolid(){return (bool)(m_rOpenArchiveDataEx.Flags&0x0008);} //New volume naming scheme ('volname.partN.rar') //inline bool IsArchivePartN(){return (bool)(m_rOpenArchiveDataEx.Flags&0x0010);} //Authenticity information present //inline bool IsArchiveAuthenticityInfo(){return (bool)(m_rOpenArchiveDataEx.Flags&0x0020);} //Recovery record present //inline bool IsArchiveRecoveryRecord(){return (bool)(m_rOpenArchiveDataEx.Flags&0x0040);} //Block headers are encrypted inline bool IsArchiveEncryptedHeaders(){return (bool)(m_rOpenArchiveDataEx.Flags&0x0080);} //First volume (set only by RAR 3.0 and later) //inline bool IsArchiveFirstVolume(){return (bool)(m_rOpenArchiveDataEx.Flags&0x0100);} //ディレクトリであるか否か inline bool IsDirectory(){return ((m_rHeaderDataEx.Flags&0x00E0)==0x00E0);} //64bit用圧縮/解凍されたファイルサイズを取得 inline UINT64 GetFilePackedSize64(){return ((((UINT64)m_rHeaderDataEx.PackSizeHigh)<<32)|m_rHeaderDataEx.PackSize);} inline UINT64 GetFileUnpackedSize64(){return ((((UINT64)m_rHeaderDataEx.UnpSizeHigh)<<32)|m_rHeaderDataEx.UnpSize);} private: bool bDllReady;//DLLが使用可能な状況であるか否か HMODULE m_hDll;//DLLのハンドル HANDLE m_hArc;//rarファイルのハンドル RARHeaderDataEx m_rHeaderDataEx; RAROpenArchiveDataEx m_rOpenArchiveDataEx; int m_iResult; IStream* m_pIStream; PRAROPENARCHIVEEX pRAROpenArchiveEx; PRARCLOSEARCHIVE pRARCloseArchive; PRARREADHEADEREX pRARReadHeaderEx; PRARPROCESSFILE pRARProcessFile; PRARPROCESSFILEW pRARProcessFileW; PRARSETCALLBACK pRARSetCallback; PRARSETPASSWORD pRARSetPassword; private: //コールバック関数 static int PASCAL RarCallbackProc(UINT uMsg,LPARAM UserData,LPARAM lParam1,LPARAM lParam2); }; #endif //UNRARFILE_H
Home > ソフトウェア > Ashley > Ashley130.zip/Ashley130.exe > Src > UnRarFile.h