Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

помогите разобраться с winapi i-net functions

12K
15 января 2006 года
warlocklex
15 / / 14.01.2006
Мне нужно написать на winapi прогу типа «подсчет и-нет трафика» по dial-up.Куча вопросов появилась:
1) Проверка отключен ли от сети функция InetIsOffline(0).Писал просто
if (InetIsOffline(0)){
FlashWindow(hwnd, TRUE);
MessageBox(hWnd, "отключен от сети ", "ВНИМАНИЕ", NULL);
return 0;}
НО КУДА ЭТО ВСТАВЛЯТ Я НЕ ПОНЯЛ,т.к этот кусок надо вставлять что бы он постоянно опрашивался. Толи в обработчик событий (switch (Message)) или сюда while(GetMessage(&msg,NULL,0,0))
2)Т.к я подключаюсь через модем то в MSDN говорят для модемов определения подключения используют функцию InternetDial. Ещё есть вот эта функция InternetCheckConnection() КАКОЙ лучше?
3) SYSTEMTIME st;
GetLocalTime (&st);
Получение локально времени. Как вывести время на окно ? т.к. GetLocalTime function does not return a value
4) как вывести на экран текст я знаю(DrawText(hDC,"текст", -1,&Rect,DT_SINGLELINE|DT_CENTER|DT_VCENTER);) а как выводить изменяющее время или трафик с каждой секундой? Надо обрабатывать запрос каждую секунду. А как?а где?
1.9K
15 января 2006 года
mail0
137 / / 09.05.2005
Так как дозваниваешься через модем, то используй RasConnectrionNotifycation() там, всё довольно просто, передаешь идентификатор подключения, и Event, создаещь поток и ждёшь сигнала...

Цитата:

3) SYSTEMTIME st;
GetLocalTime (&st);


А что тут собственно не понятно? Получил время, преобразовал в строку и делай с ним, что угодно.

Цитата:
4) как вывести на экран текст я знаю(DrawText(hDC,"текст", -1,&Rect,DT_SINGLELINE|DT_CENTER|DT_VCENTER) а как выводить изменяющее время или трафик с каждой секундой? Надо обрабатывать запрос каждую секунду.

Рисуй, по сообщению WM_PAINT.

12K
16 января 2006 года
warlocklex
15 / / 14.01.2006
Цитата:
Originally posted by mail0
Так как дозваниваешься через модем, то используй RasConnectrionNotifycation() там, всё довольно просто, передаешь идентификатор подключения, и Event, создаещь поток и ждёшь сигнала...


А что тут собственно не понятно? Получил время, преобразовал в строку и делай с ним, что угодно.


какой функцией в строку?

1.9K
17 января 2006 года
mail0
137 / / 09.05.2005
Цитата:
Originally posted by warlocklex
какой функцией в строку?


sprintf();
itoa();

Кстати, в любом букваре написано ;).

1.8K
17 января 2006 года
LM(AL/M)
332 / / 20.12.2005
Цитата:
Originally posted by mail0

А что тут собственно не понятно? Получил время, преобразовал в строку и делай с ним, что угодно.
Рисуй, по сообщению WM_PAINT.



по таймеру нада!

12K
18 января 2006 года
warlocklex
15 / / 14.01.2006
Цитата:
Originally posted by LM(AL/M)
по таймеру нада!


вот такая у меня процедура по таймеру!

 
Код:
VOID CALLBACK TimerProc(HWND hwnd, UINT Message, UINT_PTR idEvent,DWORD dwTime )
{
HDC hDC;PAINTSTRUCT PaintStruct;RECT Rect;
      hDC = BeginPaint(hwnd,&PaintStruct);
       GetClientRect(hwnd,&Rect);
       drw=DrawText (hDC,"ytÏÓÑÒÎ", -1,&Rect,DT_RIGHT|DT_MODIFYSTRING);
       EndPaint(hwnd,&PaintStruct);                    
}

не рисует! что в ней не так!
12K
18 января 2006 года
warlocklex
15 / / 14.01.2006
Цитата:
Originally posted by mail0
sprintf();
itoa();

Кстати, в любом букваре написано ;).


я пробывал и так log=itoa(st.wYear,log,10);
и так _ltoa(st.wYear,log,10);[/CODE]
////.....

 
Код:
case WM_PAINT:{
       hDC = BeginPaint(hwnd,&PaintStruct);
       GetClientRect(hwnd,&Rect);
       DrawText (hDC,log, -1,&Rect,DT_LEFT);
       EndPaint(hwnd,&PaintStruct);
       }


и выдает ошибку при запуске:
Project raised exception class EAccessViolatoin woth message 'Access violation at adress 00404af0.Write of adress 7c80B779'.Process stoped.use step or run to con........
406
18 января 2006 года
vitaly2003s
481 / / 27.07.2004
Цитата:
Originally posted by warlocklex
я пробывал и так log=itoa(st.wYear,log,10);
и так _ltoa(st.wYear,log,10);[/CODE]
////.....

 
Код:
case WM_PAINT:{
       hDC = BeginPaint(hwnd,&PaintStruct);
       GetClientRect(hwnd,&Rect);
       DrawText (hDC,log, -1,&Rect,DT_LEFT);
       EndPaint(hwnd,&PaintStruct);
       }


и выдает ошибку при запуске:
Project raised exception class EAccessViolatoin woth message 'Access violation at adress 00404af0.Write of adress 7c80B779'.Process stoped.use step or run to con........



А у тебя под переменную log память то выделена?
Хотя бы так :
char log[20];

12K
19 января 2006 года
warlocklex
15 / / 14.01.2006
Цитата:
Originally posted by vitaly2003s
А у тебя под переменную log память то выделена?
Хотя бы так :
char log[20];


спасибо вырулило!
ещё вопрос почему у меня в файл буквы не правильно сохраняет т.е. как будто кодировка не та?

Код:
void zapiz(char*  cTextBuffer)
{
char cBuffer[0x400];
HANDLE hFile;DWORD dwBytes;

hFile=CreateFile("i-net.log",GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
if(hFile == INVALID_HANDLE_VALUE)
   {
    MessageBox(NULL, "ÍÅ ÑÎÇÄÀÍ ÔÀÉË", "ÂÍÈÌÀÍÈÅ", NULL);
   }
 SetFilePointer(hFile,0,0,FILE_END);
 WriteFile(hFile,cTextBuffer,40,&dwBytes,NULL);
 CloseHandle(hFile);
 for(int i=0;i<sizeof(cTextBuffer);i++){cTextBuffer=0;};
 }

char log[4096];
zapiz(log);
12K
19 января 2006 года
warlocklex
15 / / 14.01.2006
какой функцией определит вход\исход трафик?
249
19 января 2006 года
DissDoc
639 / / 01.10.2004
Цитата:
Originally posted by warlocklex
какой функцией определит вход\исход трафик?


Для входящего трафика используй функцию
RasGetConnectionStatistics

12K
20 января 2006 года
warlocklex
15 / / 14.01.2006
Цитата:
Originally posted by DissDoc
Для входящего трафика используй функцию
RasGetConnectionStatistics


 
Код:
RAS_STATS r_stat;HRASCONN hRasCon;cInByte[BUFSIZE]
 r_stat.dwSize = sizeof(RAS_STATS);
stat=RasGetConnectionStatistics(&hRasCon,        &r_stat);
        if (stat!=0){itoa(stat,cInByte,10);
                 MessageBox(hwnd, cInByte,  "RasGetConnectionStatistics", NULL);
             }

вылетает програ!
что не так?
1.9K
20 января 2006 года
mail0
137 / / 09.05.2005
Цитата:
Originally posted by warlocklex
 
Код:
RAS_STATS r_stat;HRASCONN hRasCon;cInByte[BUFSIZE]
 r_stat.dwSize = sizeof(RAS_STATS);
stat=RasGetConnectionStatistics(&hRasCon,        &r_stat);
        if (stat!=0){itoa(stat,cInByte,10);
                 MessageBox(hwnd, cInByte,  "RasGetConnectionStatistics", NULL);
             }

вылетает програ!
что не так?


Ещё бы она не вылетела :)
Интересно на какое соединение у тебя указывает hRasCon ?
Перечесил все соединения через RasEnumConnections, а потом уже из полученного списка выбирай любое подключение и получай для него статистику.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог