Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 2 августа!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

ПРОГРАММИРОВАНИЕ НА C и С++



Слушай, дружище, зачем так мучиться с этим языком С++, ты ведь не Билл Гейтс. Возьми тот же Python и программируй, он кроссплатформенный, под Windows тоже работает. Я сам давно заметил: то что на Си пишешь в страницу кода, на питоне решается в одну-две строки. При том, питон намного проще, я его сам недавно изучил по видеокурсу вот этому. Кстати, автор отлично там объясняет. Буквально день-два и уже будешь писать на нём, чего не скажешь про сложный С++.
Подключен ли компьютер к интернету
A: (SUnteXx)
Оригинальная ссылка: нету

Вариант 2

Есть еще один способ проверки соединения компа с интернетом.
#include <stdio.h>
 
 #include <pdh.h>
 
 #include <conio.h>
 
 
 
 /*******************************************************************************/
 
 /********                                                               ********/
 
 /********                                                               ********/
 
 /********            не забудьте включить в проект "pdh.lib"            ********/
 
 /********                                                               ********/
 
 /********    Project -> Settings -> Link -> Object / Library Modules    ********/
 
 /********                                                               ********/
 
 /********                                                               ********/
 
 /*******************************************************************************/
 
 
 
 
 
 /*******************************************************************************/
 
 /***********                                                         ***********/
 
 /***********            PDH - performance data helper                ***********/
 
 /***********                                                         ***********/
 
 /*******************************************************************************/
 
 
 
 
 
 /**************************** Описание наших функций ***************************/
 
 
 
 #define PDH_ERROR -1
 
 
 
 // Функция инициализирует PDH (performance data helper)
 
 PDH_STATUS pdh_Init (HQUERY &hQuery, HCOUNTER &hCounter);
 
 
 
 
 
 // Функция возвращает в случае удачи скорость соединения, в противном случае PHG_ERROR (-1)
 
 int GetInternetSpeed (HQUERY hQuery, HCOUNTER hCounter, PDH_STATUS &pdhStatus);
 
 
 
 
 
 // Функция анинициализирует PDH
 
 void pdh_Uninit (HQUERY hQuery, HCOUNTER hCounter);
 
 
 
 
 
 // Функция показывает сообщение об ошибке
 
 void ShowErrorMessage(PDH_STATUS pdhStatus);
 
 
 
 
 
 // хмм... в названии функции все сказано!
 
 void begin();
 
 
 
 /****************************************************************************/
 
 
 
 
 
 void main(void)
 
 {
 
     begin();
 
     
 
     printf(TEXT("Press any key to continue")); // нажмите "any key" на клавиатуре :P
 
     while (!_getch()); // ждем, пока юзверь не "клацнет" "any key"
 
 }
 
 
 
 void begin()
 
 // хмм... в названии функции все сказано!
 
 {
 
     PDH_STATUS  pdhStatus      = 0;
 
 
 
     HQUERY hQuery;
 
     HQUERY hCounter;
 
     int iSpeed;
 
     pdhStatus = pdh_Init(hQuery, hCounter); // инициализируем PDH
 
 
 
  // если не произошел облом с иницализации PDH, то
 
     if ( pdhStatus == ERROR_SUCCESS )
 
     {
 
         printf("Press Esc to exit\r\n");
 
  // пока юзверь не зажмет клавишу Esc, то
 
         while (GetKeyState(VK_ESCAPE) >= 0)
 
         {
 
  // получаем скорость соединения
 
             iSpeed = GetInternetSpeed(hQuery, hCounter, pdhStatus);
 
 
 
  // если не произошла ошибка (т.е. не вернулось значение PHG_ERROR)
 
             if (iSpeed != PDH_ERROR)
 
                 printf("Online. Speed: %i\r\n", iSpeed); // выводим значение
 
             else // а если произошла ошибка, то
 
                 printf("Offline\r\n");
 
 
 
             Sleep(500); // ждем 0.5 секунд(ы)
 
         }
 
 
 
 // если юзверь все-таки клацнул Esc, то флаг ему в руки :)
 
         pdh_Uninit(hQuery, hCounter); // заканчиваем работу с PDH
 
     }
 
     else // если произошла ошибка при инициализации PDH
 
         ShowErrorMessage(pdhStatus); // показываем Еррорное сообщение
 
     pdh_Uninit(hQuery, hCounter); // заканчиваем работу с PDH
 
 }
 
 
 
 void ShowErrorMessage(PDH_STATUS pdhStatus)
 
 // Сама функция показа сообщения об ошибке
 
 {
 
     LPSTR szMessage = NULL;
 
 
 
 // грузим строку с ошибкой в szMessage. Память выделит функция
 
     FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER |
 
                     FORMAT_MESSAGE_FROM_HMODULE,
 
                     GetModuleHandle("PDH.DLL"), pdhStatus,
 
                     MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
 
                     szMessage, 0, NULL);
 
 
 
     if (szMessage)
 
         printf("Error №%i:  %s\r\n", pdhStatus, szMessage); // показываем ошибку
 
     else
 
         printf("Offline\r\n");
 
 
 
     LocalFree(szMessage); // очищаем буфер
 
 }
 
 
 
 PDH_STATUS pdh_Init(HQUERY &hQuery, HCOUNTER &hCounter)
 
 // инициализируем PDH
 
 {
 
     PDH_STATUS  pdhResult   = 0;
 
     CHAR        szCounterPath[1024];
 
     DWORD       dwType      = 0;
 
     
 
     pdhResult = PdhOpenQuery( NULL, 0, &hQuery ); // запрос на открытие PDH
 
     
 
     if ( pdhResult != ERROR_SUCCESS ) // если была ошибка, то
 
         return pdhResult; // выходим, возвращая номер ошибки
 
 
 
     strcpy(szCounterPath, "\\Network Interface(WAN [PPP_SLIP] Interfacee)\\Current Bandwidth");
 
 
 
 // открываем счетчик PDH
 
     pdhResult = PdhAddCounter(hQuery, szCounterPath, 0, &hCounter);
 
 
 
     if (pdhResult != ERROR_SUCCESS) // если была ошибка, то
 
         return pdhResult; // выходим, возвращая номер ошибки
 
 
 
  // если дошли до этого места, то ошибки на 100% не было!
 
     return pdhResult;
 
 }
 
 
 
 int GetInternetSpeed(HQUERY hQuery, HCOUNTER hCounter, PDH_STATUS &pdhStatus)
 
 // получаем скорость соединения
 
 {
 
     pdhStatus = 0;
 
     DWORD       dwType      = 0;
 
 
 
 // даем запрос на сборы инфы
 
     pdhStatus = PdhCollectQueryData(hQuery);
 
 
 
     if (pdhStatus != ERROR_SUCCESS) // если была ошибка, то
 
         return PDH_ERROR; // выходим, возвращая ошибку
 
 
 
     _PDH_FMT_COUNTERVALUE pfci;
 
     ZeroMemory(&pfci, sizeof(pfci)); // очищаем структуру pfci
 
 
 
 // Получаем инфу о скорости!
 
     pdhStatus = PdhGetFormattedCounterValue( hCounter, PDH_FMT_DOUBLE, &dwType, &pfci);
 
     
 
     if (pdhStatus != ERROR_SUCCESS) // если была ошибка, то
 
         return PDH_ERROR; // выходим, возвращая ошибку
 
 
 
     return (int)pfci.doubleValue; // возвращаем скорость соединения!
 
 }
 
 
 
 void pdh_Uninit(HQUERY hQuery, HCOUNTER hCounter)
 
 // анинициализация
 
 {
 
     PdhRemoveCounter(hCounter); // удаляем счетчик
 
     PdhCloseQuery(hQuery); // закрываем запрос
 
 }



<< ВЕРНУТЬСЯ В ПОДРАЗДЕЛ

<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ




Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS