Отправляет email-рассылки с помощью сервиса Sendsay

Web-Мастеринг - с нуля до профи

  Все выпуски  

нет.


Познавательное программирование

(comp.soft.prog.urisprog)

Выпуск 34


Здравствуйте, Уважаемые подписчики!
DVDSELLER.RU
СЕРИАЛЫ НА DVD ПОЧТОЙ
  • ВАВИЛОН-5 20DVD 2000р
  • ДРУЗЬЯ 16DVD 1700р
  • ЛЕКС 8DVD 1000р
  • СЕКС В БОЛЬШОМ ГОРОДЕ 6DVD 800р
  • ЗАЧАРОВАННЫЕ 6DVD 800р
  • СКОРАЯ ПОМОЩЬ 4DVD 600р
  • АЛЬФ 3DVD 500р
  • Д.А."ЛУННЫЙ СВЕТ" 3DVD 500р
  • СОЛДАТЫ 1-7 13DVD 1500р
  • МАСТЕР И МАРГАРИТА 2DVD 400р
  • БРИГАДА 2DVD 400р
  • СЛУЖБА 21 1DVD 300р
  • СИМПСОНЫ 7DVD 900р
  • ФУТУРАМА 3DVD 500р
  • ЮЖНЫЙ ПАРК 2DVD 400р
  • ГРИФФИНЫ 2DVD 400р
  • БИВИС И БАТТХЕД 1DVD 300р
  • Заказать эти сериалы можно на: DVDSELLER.RU
    или по e-mail: dvdseller@bk.ru

    Полезные функции для C++. Часть 2

    Взять иконку файла
    //Способ 1, не надежный
    //работает не со всеми файлами.
    //Залезаем в реестр

    #include "registry.hpp"
    void ExtIcon1(String FileLocate,TIcon *Icon)
    { int lehgthP=FileLocate.Length();
    String EXT="";
    for(int i=lehgthP;i>0;i--)
    if(FileLocate[i]=='.'){EXT=FileLocate.SubString(i,lehgthP);break;}
    TRegistry *R=new TRegistry();
    R->RootKey=HKEY_CLASSES_ROOT;
    R->OpenKey(EXT,false);
    String S=R->ReadString("");
    R->CloseKey();
    R->OpenKey(S+"\\DefaultIcon",false);
    String DefaultIcon=R->ReadString("");
    delete R;
    if(DefaultIcon!="")
    {
    int length,iconNum, Sem;
    String Path,iconNumStr;
    length=DefaultIcon.Length();
    Sem = DefaultIcon.Pos(',');
    Path = DefaultIcon.SubString(0,Sem-1);
    iconNum = StrToInt(DefaultIcon.SubString(Sem+1,length-Sem));
    Icon->Handle=ExtractIcon(0,Path.c_str(),iconNum);
    }
    }

    //Способ 2, единственный надежный
    //работает со всеми файлами
    //Пользуемся WinApi

    void ExtIcon(String FileLocate,TIcon *Icon)
    { SHFILEINFO FileInfo;
    SHGetFileInfo(FileLocate.c_str(),NULL,&FileInfo,sizeof(FileInfo),SHGFI_ICON);
    Icon->Handle=FileInfo.hIcon;
    }


    Расшарить папку на FTP
    //Пример расшаривания папки на FTP для консоли

    #include "windows.h"
    #include "wininet.h"
    #include "tchar.h"
    #include "stdio.h"
    #include "conio.h"

    void ScanFtpFolder(TCHAR *szServerName, LPSTR szPathSpec)
    { HINTERNET hOpen = NULL,hInet=NULL,hFTP=NULL;
    WIN32_FIND_DATA FindFileData;
    memset ((char *)&FindFileData, 0, sizeof(FindFileData));
    char Buffer[MAX_PATH+1]={0};
    hInet = InternetOpen(TEXT("FTP Scanner"), INTERNET_OPEN_TYPE_PRECONFIG,
    NULL, NULL, 0);
    if (hInet!=NULL)
    { hFTP = InternetConnect (hInet, szServerName,
    INTERNET_INVALID_PORT_NUMBER, NULL, NULL,
    INTERNET_SERVICE_FTP, INTERNET_FLAG_PASSIVE, 0);
    if (hFTP!=NULL)
    { hOpen = FtpFindFirstFile(hFTP, szPathSpec,
    &FindFileData, INTERNET_FLAG_NO_CACHE_WRITE, 0);
    if(hOpen!=NULL)
    { do
    { printf(FindFileData.cFileName);
    printf("\n");
    if(FindFileData.dwFileAttributes &&
    FILE_ATTRIBUTE_DIRECTORY)
    { strcpy(Buffer,"/");
    strcat(Buffer,FindFileData.cFileName);
    strcat(Buffer,"/*.*");
    ScanFtpFolder(szServerName ,Buffer);
    }
    }while (InternetFindNextFile(hOpen, &FindFileData));
    InternetCloseHandle (hOpen);
    }
    InternetCloseHandle (hFTP);
    }
    InternetCloseHandle (hInet);
    }
    }

    int main()
    {
    ScanFtpFolder("192.168.0.91","");
    getch();
    return 0;
    }


    Удалить Temporary Internet Files
    //Функция удаляет файлы из Temporary Internet Files
    //Правда функция не работает с Cookies
    //Но если ее немного переделать, то она будет
    //удалять и кукисы
    //обязательно инклюдим wininet.h

    #include "wininet.h"

    bool DelTempFiles()
    {
    bool bResult = FALSE;
    bool bDone = FALSE;
    LPINTERNET_CACHE_ENTRY_INFO lpCacheEntry = NULL;
    DWORD dwTrySize, dwEntrySize = 4096; // размер буфера
    HANDLE hCacheDir = NULL;
    DWORD dwError = ERROR_INSUFFICIENT_BUFFER;
    do
    {
    switch (dwError)
    {
    case ERROR_INSUFFICIENT_BUFFER:
    delete [] lpCacheEntry;
    lpCacheEntry = (LPINTERNET_CACHE_ENTRY_INFO) new char[dwEntrySize];
    lpCacheEntry->dwStructSize = dwEntrySize;
    dwTrySize = dwEntrySize;
    bool bSuccess;
    if (hCacheDir == NULL)
    bSuccess = (hCacheDir
    = FindFirstUrlCacheEntry(NULL, lpCacheEntry,
    &dwTrySize)) != NULL;
    else
    bSuccess = FindNextUrlCacheEntry(hCacheDir, lpCacheEntry, &dwTrySize);
    if (bSuccess)
    dwError = ERROR_SUCCESS;
    else
    {
    dwError = GetLastError();
    dwEntrySize = dwTrySize;
    }
    break;
    case ERROR_NO_MORE_ITEMS:
    bDone = TRUE;
    bResult = TRUE;
    break;
    case ERROR_SUCCESS:
    if (!(lpCacheEntry->CacheEntryType & COOKIE_CACHE_ENTRY))
    DeleteUrlCacheEntry(lpCacheEntry->lpszSourceUrlName);
    dwTrySize = dwEntrySize;
    if (FindNextUrlCacheEntry(hCacheDir, lpCacheEntry, &dwTrySize))
    dwError = ERROR_SUCCESS;
    else
    {
    dwError = GetLastError();
    dwEntrySize = dwTrySize;
    }
    break;
    default:
    bDone = TRUE;
    break;
    }
    if (bDone)
    {
    delete [] lpCacheEntry;
    if (hCacheDir)
    FindCloseUrlCache(hCacheDir);
    }
    } while (!bDone);
    return bResult;
    }



    Добавить файл в автозагрузку (Builder C++)
    //Функция добавляет файл FileName в автозагрузку

    #include "registry.hpp"

    void AddFileInReg(AnsiString FileName)
    { TRegIniFile *REG = new TRegIniFile("");
    REG->RootKey = HKEY_LOCAL_MACHINE;
    REG->OpenKey("\\SOFTWARE\\Microsoft\\Windows\\" +
    + "CurrentVersion\\Run", false);
    REG->WriteString("\\SOFTWARE\\Microsoft\\Windows\\" +
    + "CurrentVersion\\Run", FileName, FileName);
    delete REG;
    }




    Все вопросы, пожелания и предложения ведущему рассылки, прошу слать на e-mail: urisff@inbox.ru

    Все статьи публикуются здесь только с разрешения (или рекомендации) автора.

    Если вы хотите опубликовать здесь свою статью, то сделайте это, переслав её мне (желательно в виде html, причём без картинок).

    В случае, если вы будете использовать приведённые в этой рассылке материалы, не забудьте сделать ссылку на эту рассылку.

    Ведущий рассылки:
    Набатников Иван, urisff@inbox.ru
    http://www.tireal.com


    В избранное