Expermicid Posted August 27, 2012 Share Posted August 27, 2012 (edited) [lenguaje=delphi]// ***************************************************************************** // * CPP: CPP_GetFileZillaAccounts // * AUTOR: Fakedo0r .:PD-TEAM:. // * FECHA: 27.08.2012 // * CORREO: [email protected] // * BLOG: Sub-Soul.blogspot.com / Sub-Soul.com // * REQUERIMIENTOS: Librerias Estandar EMBARCADERO XE2 // ***************************************************************************** // ***************************************************************************** // <--- #INCLUDE ---> // ***************************************************************************** #include "CPP_GetFileZillaAccounts.h" #include #include #include #include #include // ***************************************************************************** // <--- DECLARACION DE FUNCIONES / PROCEDIMIENTOS ---> // ***************************************************************************** Boolean IsFileExists(String sFile); String ReadFileAPI(String sFile); String GetSpecialFolderAPI(int iCSDL); String ByteArrayToString(std::vectorvbArray); String StrCenter(String sCadena, String sDel_1, String sDel_2); std::vectorGetFileZilaAccounts(String sSepInt); std::vectorSplit(String sCadena, String sDelimitador); // ***************************************************************************** // <--- RECUPERA LAS CUENTAS DE FILEZILLA ---> // ***************************************************************************** std::vectorGetFileZilaAccounts(String sSepInt) { int I; String sPath; String sHost; String sUser; String sPass; String sAccounts; std::vectorvsAcoounts; std::vectorvsTemp; sPath = GetSpecialFolderAPI(CSIDL_APPDATA) + "\\FileZilla\\recentservers.xml"; if (IsFileExists(sPath) == false) { exit; } sAccounts = ReadFileAPI(sPath); sAccounts = StrCenter(sAccounts, "", ""); vsAcoounts = Split(sAccounts, ""); for (I = 1; I < vsAcoounts.size(); I++) { sHost = StrCenter(vsAcoounts, "", ""); sUser = StrCenter(vsAcoounts, "", ""); sPass = StrCenter(vsAcoounts, "", ""); vsTemp.push_back(sHost + sSepInt + sUser + sSepInt + sPass); } return vsTemp; } // ***************************************************************************** // <--- OBTIENE RUTAS ESPECIALES ---> // ***************************************************************************** String GetSpecialFolderAPI(int iCSDL) { wchar_t pszPath[MAX_PATH]; ITEMIDLIST * tIDL; HRESULT hRet = SHGetSpecialFolderLocation(0, iCSDL, &tIDL); if (hRet != NOERROR) { return 0; } SHGetPathFromIDList(tIDL, pszPath); return String(pszPath); } // ***************************************************************************** // <--- COMPRUEBA SI EL FICHERO EXISTE ---> // ***************************************************************************** Boolean IsFileExists(String sFile) { HRESULT hRes = GetFileAttributes(sFile.w_str()); if (hRes == INVALID_FILE_ATTRIBUTES) { return false; } else { return true; } } // ***************************************************************************** // <--- LECTURA ---> // ***************************************************************************** String ReadFileAPI(String sFile) { DWORD dwRet = 0; int iSize = 0; HANDLE hFile; std::vectorvbBuffer; hFile = CreateFile(UnicodeString(sFile).c_str(), GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if (hFile == INVALID_HANDLE_VALUE) { return 0; } iSize = GetFileSize(hFile, 0); vbBuffer.resize(iSize); SetFilePointer(hFile, 0, NULL, FILE_BEGIN); ReadFile(hFile, &vbBuffer[0], iSize, &dwRet, NULL); CloseHandle(hFile); return ByteArrayToString(vbBuffer); } // ***************************************************************************** // <--- CONVIERTE ARRAY DE BYTES EN STRING ---> // ***************************************************************************** String ByteArrayToString(std::vectorvbArray) { String sResult; Integer I; sResult.SetLength(vbArray.size()); for (I = 0; I < vbArray.size(); I++) { sResult[i + 1] = vbArray; } return sResult; } // ***************************************************************************** // <--- SPLIT ---> // ***************************************************************************** std::vectorSplit(String sCadena, String sDelimitador) { int I; std::vectorvsTemp; for (I = 0; I < sCadena.Length(); I++) { if (Pos(sDelimitador, sCadena) == 0) { vsTemp.push_back(MidStr(AnsiString(sCadena), 1, sCadena.Length())); return vsTemp; } else { vsTemp.push_back(MidStr(AnsiString(sCadena), 1, Pos(sDelimitador, sCadena) - 1)); sCadena = MidStr(AnsiString(sCadena), vsTemp.Length() + sDelimitador.Length() + 1, sCadena.Length() - sDelimitador.Length()); } } return vsTemp; } // ***************************************************************************** // <--- OBTIENE LA CADENA CENTRAL ---> // ***************************************************************************** String StrCenter(String sCadena, String sDel_1, String sDel_2) { String sTemp; sTemp = MidStr(AnsiString(sCadena), Pos(sDel_1, sCadena) + sDel_1.Length(), sCadena.Length() - Pos(sDel_2, sTemp)); sTemp = MidStr(AnsiString(sTemp), 1, AnsiPos(sDel_2, sTemp) - 1); return sTemp; } [/lenguaje] Edited February 16, 2014 by Expermicid Link to comment Share on other sites More sharing options...
Recommended Posts