InternetGetConnectedState
-
Hallo zusammen,
ich möchte gerne die Wininet-Funktion InternetGetConnectedState() verwenden, um herauszufinden, ob eine Internetverbindung besteht. Dazu muss ich aber per dllimport die wininet.dll einbinden. Wie mache ich das und an welcher Stelle im Programm muss ich die dllimport-Anweisung schreiben?
Vielen Dank !
mfg
-
Hier ein paar Codezeilen aus einem Internetcounter:
#include "WinInet.h" //WinInet.lib in den Linkereinstellungen einbinden! .... void CInternetChronometerDlg::OnTimer(UINT nIDEvent) { switch(nIDEvent) { case 1: { DWORD dwFlags = 0; BOOL res = InternetGetConnectedState(&dwFlags,0); // Flags for InternetGetConnectedState // #define INTERNET_CONNECTION_MODEM 1 // #define INTERNET_CONNECTION_LAN 2 // #define INTERNET_CONNECTION_PROXY 4 // #define INTERNET_CONNECTION_MODEM_BUSY 8 // Public Const INTERNET_RAS_INSTALLED As Long = &H10 // decimal: 16 // Public Const INTERNET_CONNECTION_OFFLINE As Long = &H20 // decimal: 32 // Public Const INTERNET_CONNECTION_CONFIGURED As Long = &H40 // decimal: 64 if( ( dwFlags & 0x00000001 ) == 0x00000001 ) m_Bit1 = "Modem-Verbindung"; else m_Bit1 = ""; if( ( dwFlags & 0x00000010 ) == 0x00000010 ) m_Bit2 = "LAN-Verbindung"; else m_Bit2 = ""; if( ( dwFlags & 0x00000100 ) == 0x00000100 ) m_Bit3 = "Proxy-Verbindung"; else m_Bit3 = ""; if( ( dwFlags & 0x00001000 ) == 0x00001000 ) m_Bit4 = "MODEM_BUSY"; else m_Bit4 = ""; if( ( dwFlags & 0x00010000 ) == 0x00010000 ) m_Bit5 = "RAS installiert"; else m_Bit5 = ""; if( ( dwFlags & 0x00100000 ) == 0x00100000 ) m_Bit6 = "CONNECTION_OFFLINE"; else m_Bit6 = ""; if( ( dwFlags & 0x01000000 ) == 0x01000000 ) m_Bit7 = "verbunden/nicht verbunden?"; else m_Bit7 = ""; if( res==TRUE ) { if( dwFlags == 81 ) // durch Tests 81 herausgefunden { m_VerbindungsString = "aktiv"; SekCounter++; m_InetStunde = SekCounter/3600; m_InetMinute = SekCounter/60 - (60 * m_InetStunde); m_InetSekunde = SekCounter - (3600 * m_InetStunde) - (60 * m_InetMinute); } else { m_VerbindungsString = "?????"; } } else { m_VerbindungsString = "inaktiv"; } UpdateData(FALSE); m_ListBox.Invalidate(); } break; case 2: { //Datei counter.dat Schreiben -> Bisherige Zeit für Internetverbindung TCHAR str[50]; char* pstr = str; CFile datei( "counter.dat", CFile::modeCreate | CFile::modeWrite ); itoa(SekCounter,pstr,10); datei.Write( pstr, sizeof( str ) ); datei.Close(); } break; } CDialog::OnTimer(nIDEvent); } void CInternetChronometerDlg::OnButtonReset() { if(m_Passwort == Passwort) { //Datei start.dat Schreiben -> Start-Zeit für Zeitmessung CString ZeitString; TCHAR str[100]; char* pstr = str; CTime theTime = CTime::GetCurrentTime(); ZeitString = theTime.Format("%A, %d. %B %Y, %H:%M:%S" ); _tcscpy( str, ZeitString ); CFile datei( "start.dat", CFile::modeCreate | CFile::modeWrite ); datei.Write( str, sizeof( str ) ); datei.Close(); m_Mssstart = ZeitString; SekCounter = 0; m_InetStunde = 0; m_InetMinute = 0; m_InetSekunde = 0; m_Passwort =""; UpdateData(FALSE); } else MessageBox("Passwort ist falsch!","Information",MB_ICONEXCLAMATION); }
-
Vielen Dank, das müsste eigentlich so funktionieren. Jetzt hätte ich nur noch eine kurze Frage: Wie kann ich in Visual Studio .net die Linkeroptionen ändern?? Ich hab keine Ahnung und in der Hilfe bzw. in den Menüs kann ich auch überhaupt keinen entsprechenden Dialog finden !
-
Rechte Maustaste auf deine Klasse klicken und dann Eigenschaften.
-
Prima, klappt einwandfrei ! Vielen Dank !