помогите разобраться с winapi i-net functions
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);) а как выводить изменяющее время или трафик с каждой секундой? Надо обрабатывать запрос каждую секунду. А как?а где?
3) SYSTEMTIME st;
GetLocalTime (&st);
А что тут собственно не понятно? Получил время, преобразовал в строку и делай с ним, что угодно.
Рисуй, по сообщению WM_PAINT.
Так как дозваниваешься через модем, то используй RasConnectrionNotifycation() там, всё довольно просто, передаешь идентификатор подключения, и Event, создаещь поток и ждёшь сигнала...
А что тут собственно не понятно? Получил время, преобразовал в строку и делай с ним, что угодно.
какой функцией в строку?
какой функцией в строку?
sprintf();
itoa();
Кстати, в любом букваре написано ;).
А что тут собственно не понятно? Получил время, преобразовал в строку и делай с ним, что угодно.
Рисуй, по сообщению WM_PAINT.
по таймеру нада!
по таймеру нада!
вот такая у меня процедура по таймеру!
{
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);
}
не рисует! что в ней не так!
sprintf();
itoa();
Кстати, в любом букваре написано ;).
я пробывал и так log=itoa(st.wYear,log,10);
и так _ltoa(st.wYear,log,10);[/CODE]
////.....
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=itoa(st.wYear,log,10);
и так _ltoa(st.wYear,log,10);[/CODE]
////.....
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];
А у тебя под переменную log память то выделена?
Хотя бы так :
char log[20];
спасибо вырулило!
ещё вопрос почему у меня в файл буквы не правильно сохраняет т.е. как будто кодировка не та?
{
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);
какой функцией определит вход\исход трафик?
Для входящего трафика используй функцию
RasGetConnectionStatistics
Для входящего трафика используй функцию
RasGetConnectionStatistics
r_stat.dwSize = sizeof(RAS_STATS);
stat=RasGetConnectionStatistics(&hRasCon, &r_stat);
if (stat!=0){itoa(stat,cInByte,10);
MessageBox(hwnd, cInByte, "RasGetConnectionStatistics", NULL);
}
вылетает програ!
что не так?
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, а потом уже из полученного списка выбирай любое подключение и получай для него статистику.