在PPC的开发中有时需要判断网络什么时候连接,什么时候断开,并且做出相应的处理。比如说TimeSyncPPC程序,就需要在网络连接之后得到消息然
后去下载时间同步信息,因此就必须要一种方法让TimeSyncPPC程序在PPC连接网络之后得到系统的消息。当然有人说可以不断去轮询看系统是否连接
到网络了,但这绝对不是一个好方法。其实Windows Mobile
5.0之后微软已经提供了一个专门的函数来得到网络状态变化的Notification,我们要做的就是等待这个消息,函数如下:
HRESULT WINAPI ConnMgrRegisterForStatusChangeNotification(
BOOL fEnable,
HWND hWnd
);
这个函数是通知系统将网络状态变化的Notification发给指定的窗口,返回值有三个:
S_OK The function call was successful.
E_HANDLE The supplied window handle is invalid.
E_ACCESSDENIED The calling process does not have sufficient privileges to use this function.
当
网络连接或者断开时,ConnMgrRegisterForStatusChangeNotification函数会发送
CONNMGR_STATUS_CHANGE_NOTIFICATION_MSG的消息给窗口,但是其实看
CONNMGR_STATUS_CHANGE_NOTIFICATION_MSG的定义,它并不是一个消息,只是一个字符串:
#define CONNMGR_STATUS_CHANGE_NOTIFICATION_MSG TEXT("CONNMGR_STATUS_CHANGE_NOTIFICATION_MSG")
所以使用这个消息之前还需要注册这个消息:
m_ConnectMsg = RegisterWindowMessage(CONNMGR_STATUS_CHANGE_NOTIFICATION_MSG);
返回值m_ConnectMsg就是传递到窗口的消息。
收
到CONNMGR_STATUS_CHANGE_NOTIFICATION_MSG
的消息之后可以根据wParam来判断是断开还是连接上网络。测试发现,连接ActiveSync、GPRS(无论是cmwap或是cmnet)、
WIFI甚至打电话挂电话都会触发这个消息,在实际使用时还需要注意。
另外,微软的文档中有一个错误,经常把函数
ConnMgrRegisterForStatusChangeNotification错写成
ConnMgrRegisterForStatusNotification,所以如果看到
ConnMgrRegisterForStatusNotification这个函数,其实就是指的
ConnMgrRegisterForStatusChangeNotification函数。
下面是一个实际的例子,如有疑问请在www.17feixiang.com留言:
#include "connmgr_status.h"
#include "connmgr.h"
#pragma comment(lib,"wininet.lib")
#pragma comment(lib,"cellcore.lib")
UINT m_ConnectMsg;
BOOL CXXXXDlg::OnInitDialog()
{
......
HRESULT ret = ConnMgrRegisterForStatusChangeNotification(TRUE, this-〉m_hWnd);
m_ConnectMsg = RegisterWindowMessage(CONNMGR_STATUS_CHANGE_NOTIFICATION_MSG);
return TRUE; // return TRUE unless you set the focus to a control
}
LRESULT CXXXXDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
// TODO: Add your specialized code here and/or call the base class
if(message == m_ConnectMsg)
{
switch(wParam)
{
case CONNMGR_STATUS_CONNECTED :
MessageBox(_T("Connected"));
break;
case CONNMGR_STATUS_DISCONNECTED :
MessageBox(_T("DISCONNECTED"));
break;
default :
break;
}
}
return CDialog::WindowProc(message, wParam, lParam);
}
分享到:
相关推荐
实时的入侵检测及采取相应的防护手段,如记录证据用于跟踪和恢复、断开网络连接等。实时入侵检测能力之所以重要首先它能够对付来自内部网络的攻击,其次它能够缩短hacker入侵的时间。入侵检测系统可分为两类:基于...
本作品是完成android手机网络聊天室的设计,服务器开启后,客户端将绑定到本地的IP和端口,主要界面只有一个,以下是任务...如果某个客户端返回空值或者无法发送过去,那么表示该客户端已经断开,就从ArrayList中移除。
注意 有机油 说不能使用高分辨率这个情况 这个可能与 相机本身 或者是手机本身的分辨率有关 小蜜已经给同学 本人只在戴妃上测试了 一切正常 如果有机油发现问题 或者是 找出解决的 办法 欢迎跟帖 谢谢
软件介绍: 中兴MF253工具和破解...进入后,关机,断电,插电,开机,就可以最大连接数 32了(10) 卡拔掉,可以设置3G或者4G网络(11) version.zip就是你要升级的文件,请不要解压,我也没有密码,无需解压的
可按教室、PC 名称、学生登录名进行连接,或者只需浏览网络来确定学生。 按 UserID 连接学生。 新的“任意学生”工具栏按钮可随机地选择学生机,供教师与之交互。 能够直接从教师端工具栏中选择学生数量进行随机...
在每台Windows 95计算机上添加本地打印机(注意是本地打印机而不是网络打印机),即将打印服务器连接的三台打印机的驱动程序安装到每台Pc上. 1 1.使打印作业发往打印服务器 Server(打印服务器)全文共3页,当前为第...
断开远程登录有两种方法 在Unix的$提示符下输入exit 这时提示与远程系统断开 或者是使用“连接”菜单的“断开”项断开 断开后 Telnet 窗口并不消失 再次连接时可用“连接”菜单的“远程系统” 宿主名称输入远程主机...
注意这个状态并不能标识 Android 系统已经完全启动和可操作,在设备启动过程中设备实例就可连接到 adb,但启动完毕后系统才处于可操作状态。 no device —— 没有设备/模拟器连接。 以上输出显示当前已经连接了...
事实上,用不着这么麻烦,只要大家确认已经在BIOS中打开高级电源控制选项,同时选择ACPI Pc,一定不要选错,否则重启后可能无法进入Windows,并重新启动电脑,电脑可能会重新搜索并自动重新安装电脑的硬件,之后就...
拆分文件之后,link按纽将不再显示已断开的连接,但你可以用path(file菜单中的properties项)按纽浏览拆分的历史记录。 共享(share)文件就是在多个项目间建立文件的连接。拆分(branch)文件就是在项目之间建立了...
拆分文件之后,link按纽将不再显示已断开的连接,但你可以用path(file菜单中的properties项)按纽浏览拆分的历史记录。 共享(share)文件就是在多个项目间建立文件的连接。拆分(branch)文件就是在项目之间建立了...
MikroTik RouterOS是一种路由操作系统,并通过该软件将标准的PC电脑变成专业路由器,在软件RouterOS 软路由图的开发和应用上不断的更新和发展,软件经历了多次更新和改进,使其功能在不断增强和完善。特别在无线、...
搜索 139第7章 链接、导入和导出表 1417.1 从其他应用或者向其他应用移动数据 1417.2 理解Access如何处理其他数据库文件 格式的表 1427.2.1 识别PC数据库文件格式 1437.2.2 链接和导入外部 ISAM表 1437.2.3 用ODBC...
搜索 139第7章 链接、导入和导出表 1417.1 从其他应用或者向其他应用移动数据 1417.2 理解Access如何处理其他数据库文件 格式的表 1427.2.1 识别PC数据库文件格式 1437.2.2 链接和导入外部 ISAM表 1437.2.3 用ODBC...
1417.1 从其他应用或者向其他应用移动数据 1417.2 理解Access如何处理其他数据库文件格式的表 1427.2.1 识别PC数据库文件格式 1437.2.2 链接和导入外部 ISAM表 1437.2.3 用ODBC链接Visual FoxPro表 1457.2.4 处理...
搜索 139第7章 链接、导入和导出表 1417.1 从其他应用或者向其他应用移动数据 1417.2 理解Access如何处理其他数据库文件 格式的表 1427.2.1 识别PC数据库文件格式 1437.2.2 链接和导入外部 ISAM表 1437.2.3 用ODBC...
1417.1 从其他应用或者向其他应用移动数据 1417.2 理解Access如何处理其他数据库文件格式的表 1427.2.1 识别PC数据库文件格式 1437.2.2 链接和导入外部 ISAM表 1437.2.3 用ODBC链接Visual FoxPro表 1457.2.4 处理...
1417.1 从其他应用或者向其他应用移动数据 1417.2 理解Access如何处理其他数据库文件格式的表 1427.2.1 识别PC数据库文件格式 1437.2.2 链接和导入外部 ISAM表 1437.2.3 用ODBC链接Visual FoxPro表 1457.2.4 处理...