NotifyRouteChange
路由变化通知,网上说,网络通断时,路由表会发生变化,将会有通知发生.这种说法对吗?
基于这种说法,我建立了一个监测网络通断的线程,没有达到预期的效果://主线程
{
HANDLE handle = ::CreateThread(0, 0, WaitForEvent, (LPVOID)m_hWnd, 0, 0);
::CloseHandle(handle);
}
//监听线程
DWORD WINAPI WaitForEvent(LPVOID lpParam)
{
HANDLE handle = WSACreateEvent();
OVERLAPPED overlap;
overlap.hEvent = handle;
while (1)
{
HANDLE h2;
::NotifyRouteChange(&h2, &overlap);
if (WaitForSingleObject(h2, INFINITE) == WAIT_OBJECT_0)
{
::SendMessage((HWND)lpParam, WM_NETWORKCHANGED, 0, 0);
}
}
return 0;
}结果不管网络通断与否,都没有收到自定义消息:WM_NETWORKCHANGED
路由变化通知,网上说,网络通断时,路由表会发生变化,将会有通知发生.这种说法对吗?
基于这种说法,我建立了一个监测网络通断的线程,没有达到预期的效果://主线程
{
HANDLE handle = ::CreateThread(0, 0, WaitForEvent, (LPVOID)m_hWnd, 0, 0);
::CloseHandle(handle);
}
//监听线程
DWORD WINAPI WaitForEvent(LPVOID lpParam)
{
HANDLE handle = WSACreateEvent();
OVERLAPPED overlap;
overlap.hEvent = handle;
while (1)
{
HANDLE h2;
::NotifyRouteChange(&h2, &overlap);
if (WaitForSingleObject(h2, INFINITE) == WAIT_OBJECT_0)
{
::SendMessage((HWND)lpParam, WM_NETWORKCHANGED, 0, 0);
}
}
return 0;
}结果不管网络通断与否,都没有收到自定义消息:WM_NETWORKCHANGED
解决方案 »
- 树目录和列表的问题
- 美国-西班牙战争
- 我要一个制作chm文件的工具,听说在vc安装盘的\htmlhelp\htmlhelp.exe目录中,可惜本人没光驱,望持有者慷慨解囊..
- 求STL入门PDF电子书,有同需要的进来顶...
- 请教一下,小弟学vc不久,现想网络编程,不知是用vc好还是用。net好~
- 有人做过图像变换吗?
- 怎么从 _bstr_t 型的字符串中取出想要的子串
- 有什么简单的方法把dll变成ocx?
- 哈尔滨程序员的联盟
- 如何读取任意数据库字段类型,并定义一个相同类型的参数,我的想法对吗?Socket编程疑问
- MFC不会用ODBC连接ACCESS数据库,求大家多多帮忙啊
- Imagelist风格//ILC_MASK一点作用没有吧???
//主线程
{
HANDLE handle = ::CreateThread(0, 0, WaitForEvent, (LPVOID)m_hWnd, 0, 0);
::CloseHandle(handle);
}
//监听线程
DWORD WINAPI WaitForEvent(LPVOID lpParam)
{
while (1)
{
if (::NotifyRouteChange(NULL, NULL) == NO_ERROR)
{
::SendMessage((HWND)lpParam, WM_NETWORKCHANGED, 0, 0);
}
}
return 0;
}这样简单的监视就行,只不过这个是"路由变化通知",在禁用\启用网卡,或网线插入\拔出时才会有这个通知,我IP变化时,不会有.