[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: Nionov  
Форум » Программирование » C#/C++/.NET » [C++] Полезные функции для C++
[C++] Полезные функции для C++
RainbowДата: Понедельник, 17.06.2019, 18:36 | Сообщение # 1

-= Повелитель кодеров =-
Сообщений: 146
Награды: 0
Репутация: 4279
Статус:
Взять иконку файла
Способ 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;
}
[/i]
 
Форум » Программирование » C#/C++/.NET » [C++] Полезные функции для C++
  • Страница 1 из 1
  • 1
Поиск: