/* #include <stdio.h> #include <stdlib.h> #ifndef SAFE_FREE #define SAFE_FREE(p) if(p) { free(p); p = NULL; } #endif #ifdef __cplusplus extern "C" { #endif int GetFileSize(const char* szFileName, unsigned long* pulFileSize); int ReadDataFromFile(const char* szFileName, unsigned char* pbData, unsigned long ulDataSize); char* ReadAllDataFromFile(const char* szFileName); char* ReadAllDataFromFileEx(const char* szFileName, int flag_sz); int WriteDataToFile(const char* szFileName, const unsigned char* pbData, unsigned long ulDataSize); #ifdef __cplusplus } #endif */ //------------------------------------------------------------------------ // GetFileSize() // - 获取文件的长度 // szFileName - 文件名 // pulFileSize - 返回的文件的长度(单位:字节) //------------------------------------------------------------------------ int GetFileSize(const char* szFileName, unsigned long* pulFileSize) { FILE *fp = fopen(szFileName, "rb"); if ( fp ) { fseek(fp, 0, SEEK_END); *pulFileSize = ftell(fp); fclose(fp); return 0; } return -1; } //------------------------------------------------------------------------ // ReadDataFromFile() // - 获取文件中指定长度的数据内容 // szFileName - 文件名 // pbData - 返回的数据内容 // ulDataSize - 数据的长度(单位:字节) //------------------------------------------------------------------------ int ReadDataFromFile(const char* szFileName, unsigned char* pbData, unsigned long ulDataSize) { unsigned long ulReadedSize = 0; FILE *fp = fopen(szFileName, "rb"); if ( fp ) { ulReadedSize = (unsigned long)fread(pbData, 1, ulDataSize, fp); fclose(fp); return ( ulReadedSize == ulDataSize ) ? 0 : -1; } return -1; } //------------------------------------------------------------------------ // ReadAllDataFromFile() // - 获取文件中所有内容 // szFileName - 文件名 //------------------------------------------------------------------------ char* ReadAllDataFromFile(const char* szFileName) { unsigned long ulFileSize = 0; if ( 0 == GetFileSize(szFileName, &ulFileSize) ) { char* pbBuffer = (char*)malloc(ulFileSize); if ( 0 == ReadDataFromFile(szFileName, (unsigned char*)pbBuffer, ulFileSize) ) { return pbBuffer; } else { free(pbBuffer); return NULL; } } return NULL; } #define FLAG_SZ_END_WITH_ZERO 1 #define FLAG_SZ_END_WITHOUT_ZERO 0 //------------------------------------------------------------------------ // ReadAllDataFromFileEx() // - 获取文件中所有内容,并且可选择是否以'/0'结尾 // szFileName - 文件名 // flag_sz - 是否以'/0'结尾。0:否;1:是 //------------------------------------------------------------------------ char* ReadAllDataFromFileEx(const char* szFileName, int flag_sz) { unsigned long ulFileSize = 0; if ( 0 == GetFileSize(szFileName, &ulFileSize) ) { char* pbBuffer = NULL; if ( 1 == flag_sz ) { pbBuffer = (char*)malloc(ulFileSize+1); } else { pbBuffer = (char*)malloc(ulFileSize); } if ( 0 == ReadDataFromFile(szFileName, (unsigned char*)pbBuffer, ulFileSize) ) { if ( 1 == flag_sz ) { pbBuffer[ulFileSize] = '/0'; } return pbBuffer; } else { free(pbBuffer); return NULL; } } return NULL; } //------------------------------------------------------------------------ // WriteDataToFile() // - 保存数据到文件 // szFileName - 文件名 // pbData - 要保存的数据 // ulDataSize - 数据的长度(单位:字节) //------------------------------------------------------------------------ int WriteDataToFile(const char* szFileName, const unsigned char* pbData, unsigned long ulDataSize) { unsigned long ulWritedSize = 0; FILE *fp = fopen(szFileName, "wb"); if ( fp ) { ulWritedSize = (unsigned long)fwrite(pbData, 1, ulDataSize, fp); fclose(fp); return ( ulWritedSize == ulDataSize ) ? 0 : -1; } return -1; } //------------------------------------------------------------------------ // PutTextToClipbrd() // - 放入文本内容到剪贴板 // strText - 文本内容 //------------------------------------------------------------------------ HRESULT PutTextToClipbrd(CString strText) { HGLOBAL hGlobal=NULL; char *szBuf=NULL; if( OpenClipboard(NULL) ) { EmptyClipboard(); hGlobal = GlobalAlloc(GHND, strText.GetLength()+1); szBuf = (char*)GlobalLock(hGlobal); strcpy(szBuf, LPCSTR(strText)); GlobalUnlock(hGlobal); SetClipboardData(CF_TEXT, hGlobal); CloseClipboard(); return S_OK; } return E_FAIL; } //------------------------------------------------------------------------ // GetTextFromClipbrd() // - 获取剪贴板中的文本 // strText - 返回的文本内容 //------------------------------------------------------------------------ HRESULT GetTextFromClipbrd(CString& strText) { if ( OpenClipboard(NULL) ) { HANDLE hData = GetClipboardData(CF_TEXT); char* szBuf = (char*)GlobalLock(hData); strText = szBuf; GlobalUnlock(hData); CloseClipboard(); return S_OK; } return E_FAIL; }