Is P/Invoke InternetGetConnectedState cached?

Hello,

I'm working with the compact framework and needed to use P/Invoke functionality for finding whether or not the mobile device is connected to the internet. The connection status always seems to appear as if it is connected (through a LAN) even though the wireless is turned off and has no connection at all. Do you know if the status is cached anywhere or what I'm doing wrong?

Heres the code I have:

[DllImport("wininet.dll", CharSet = CharSet.Auto)]
private extern static bool InternetGetConnectedState(ref InternetConnectionState lpdwFlags, int dwReserved);

[Flags]
enum InternetConnectionState: int
{
INTERNET_CONNECTION_MODEM = 0x01,
INTERNET_CONNECTION_LAN = 0x02,
INTERNET_CONNECTION_PROXY = 0x04,
INTERNET_CONNECTION_RAS_INSTALLED = 0x10,
INTERNET_CONNECTION_OFFLINE = 0x20,
INTERNET_CONNECTION_CONFIGURED = 0x40
}

InternetConnectionState flags = 0;

private void btnConnection_Click(object sender, EventArgs e)
{
bool isConnected = InternetGetConnectedState(ref flags, 0);

bool isConfigured = (flags & InternetConnectionState.INTERNET_CONNECTION_CONFIGURED) != 0;
bool isOffline = (flags & InternetConnectionState.INTERNET_CONNECTION_OFFLINE) != 0;
bool isConnectedUsingModem = (flags & InternetConnectionState.INTERNET_CONNECTION_MODEM) != 0;
bool isConnectedUsingLAN = (flags & InternetConnectionState.INTERNET_CONNECTION_LAN) != 0;
bool isProxyUsed = (flags & InternetConnectionState.INTERNET_CONNECTION_PROXY) != 0;

listBox2.Items.Add(isConnected);
listBox2.Items.Add(isConfigured);
listBox2.Items.Add(isOffline);
listBox2.Items.Add(isConnectedUsingModem);
listBox2.Items.Add(isConnectedUsingLAN);
listBox2.Items.Add(isProxyUsed);
}

and the listbox2 returns:

True
False
False
False
True
False

Best Regards,

McKenzie.
Sign In or Register to comment.

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Categories