Программирование WinInet C++. WinInet сокращение от Windows Internet, это ничто иной как расширение к Windows API, созданное компанией Microsoft, который предоставляет простой в использовании интерфейса для трех прикладных протоколов Интернета.
В данном примере рассматривается способ получения строки с web сайта используя протокол HTTP, данную реализацию можно использовать для того чтобы приложение могло проверять наличие обновлений или скачивать заранее подготовленный файл, в общем можно найти огромное количество примеров для применения данной технологии.
Для начала создадим директорию, защищенную паролем на web сайте, в моем случае использовался web сервер Apache и хостинговая компания, где он размещается, предоставляет интерфейс по созданию таких директорий. Сводится он к простым действия, создание самой директории и двух конфигурационных файлов: .htaccess и .htpasswd.
Файл .htaccess выглядеть следующим образом:
AuthType Basic
AuthName 'Authorization panel'
AuthUserFile /home/*******/blaginru/www/wr_admin/.htpasswd
require valid-user
и файл .htpasswd где хранится пароль:
admin:Ht3WXRz2HYe52
также мною был добавлен файл cmd где хранится строка которую мы и будем считывать. Для создания проекта использовалась среда разработки Visual C++ 6.0, многие могу возразить, что данная среда уже устарела, но считаю, что она вполне удовлетворяет моим целям и в силу привычку мне она намного удобней, хотя прилагаемые исходники могут быть с легкостью перенесены в другую среду разработки, удобную для вас.
Создаем проект Win32 Console Application

Далее:

Добавляем файл исходник к проекту:

В настройках проекта указываем, что хотим использовать MFC:

И соответственно код приложения:
#include <iostream.h>
#include <conio.h>
#include <afxinet.h>
#include <afxwin.h>
/*---------------------------------------------------*/
#pragma comment(linker,"/FILEALIGN:16")
#pragma comment(linker,"/ALIGN:16")
#pragma comment(linker,"/IGNORE:4078 /IGNORE:4089")
#pragma comment(linker,"/merge:.rdata=.elf")
#pragma comment(linker,"/merge:.text=.elf")
#pragma comment(linker,"/merge:.reloc=.elf")
#pragma comment(linker,"/merge:.data=.elf")
#pragma comment(linker,"/SECTION:.elf,EWRX")
#pragma comment(linker,"/OPT:NOWIN98")
#pragma comment(linker,"/OPT:REF")
#pragma optimize("gsy", on)
#pragma comment (exestr, "Code by Lazy_elf")
#pragma comment(linker,"/RELEASE")
/*---------------------------------------------------*/
int main()
{
CHttpConnection * pConnect;
CInternetSession iSession;
CHttpFile * pFile;
CString m_sTemp;
pConnect = iSession.GetHttpConnection("www.blagin.ru",80,"admin","admin1982");
if(pConnect)
{
pFile = pConnect->OpenRequest("GET",(LPCSTR)"/wr_admin/cmd","www.blagin.ru");
pFile->SendRequest(NULL);
if(pFile){while(pFile->ReadString(m_sTemp)){cout<<m_sTemp<<endl;}}
}
else
{
cout<<"GetHttpConnection error"<<endl;
}
iSession.Close();
pFile->Close();
char * szMessage = "Нажмите любую клавишу для выхода";
CharToOem(szMessage,szMessage);
cout<<szMessage<<endl;
while(!getch());
return 0;
}
После компиляции и запуска приложения вы увидите следующее:

Для создания более интерактивной системы, например для создания Watch-dog или иных систем, примеров множество, например когда у вас нет возможности управлять компьютером напрямую, то это можно сделать при помощи кода приведенного в данном примере, так как наша программа считывает строки с файла, то это могут быть управляющие коды или иная информация, вы же в свою очередь можете добавить свой функционал под свои нужды. Для этого достаточно создать php скрипт в защищенной директории сайта, здесь привожу небольшой пример без форм и генерации динамических страниц, который всего лишь производит запись управляющего кода в файл:
<?
$f=fopen("cmd","a") or die("Error");
flock($f,LOCK_EX);
fwrite($f, "$mess");
fflush($f);
flock($f,LOCK_UN);
fclose($f);
exit();
?>
Для записи управляющего кода достаточно запустить в вашем браузере строку:
https://blagin.ru/wr_admin/имя_скрипта.php?mess=Управляющий_код
Это можно сделать из браузера на вашем телефоне или с других мест где есть доступ в Интернет. Управляющий код может служить для например перезагрузки компьютера или его выключения, в общем это один из способов создания системы по удаленному управлению компьютером. Естественно для удобства можно расширить скрипт, добавив веб форму и разнообразные управляющие элементы. Например вот так:

Для тех кто хочет поподробней узнать о технологии WinInet можете прочесть статьи размещенные на сайте www.rsdn.ru а именно:
http://rsdn.ru/article/inet/wininet.xml
http://rsdn.ru/article/inet/inetapi.xml
http://rsdn.ru/article/inet/wininet_delphi.xml
или в соответствующем разделе MSDN.
Надеюсь, вам пригодится изложенный в данном примере материал, с наилучшими пожеланиями, Lazy_elf.