积极答复者
windows mobile上如捕获当前有日历事件发生呢

问题
答案
-
上面的方法已经可以捕获到了,只是加一下判断就可以了。
#define CALENDAR_APP_NAME TEXT("CALENDAR.EXE")
#define CALENDAR_APP_NAME_ALLDAY TEXT("CALENDAR.EXE //allday")
case CNT_CLASSICTIME: //在此处判断是否为MS Calendar的就可以了。
判断是否等于:
if( wcscmp(pcenih->pcent->lpszApplication,CALENDAR_APP_NAME) == 0 ) //日历事件不是全天的判断
else if( memcmp(pcenih->pcent->lpszApplication,CALENDAR_APP_NAME_ALLDAY,wcslen(CALENDAR_APP_NAME_ALLDAY)) == 0 ) //日历事件是全天的判断
我是通过这种方法来判断的。
li_guotao- 已标记为答案 Jiong ShiMVP 2011年3月10日 14:38
2009年7月13日 9:46
全部回复
-
这个可以通过捕获微软的Notification来实现。
//获得通知句柄数
bRet = CeGetUserNotificationHandles(NULL, 0, &dwHowMany);
if( !bRet )
break;//分配句柄指针
handles = new HANDLE[dwHowMany];
if( !handles )
break;//获得通知句柄
bRet = CeGetUserNotificationHandles(handles, dwHowMany, &dwHowMany);
if( !bRet )
break;DEBUGMSG( DBG_TRACE,(TEXT("CeGetUserNotificationHandles Nofity GetMany = %ld"),dwHowMany) );
for( DWORD i = 0; i < dwHowMany; i++ )
{
//获得通知消息占用缓冲区大小
bRet = CeGetUserNotification(handles[i],0,&dwBytesNeeded,NULL);
if( !bRet && dwBytesNeeded == 0 )
continue;//分配缓冲区
pBuffer = new BYTE[dwBytesNeeded];
if( !pBuffer )
continue;//获得用户通知信息
bRet = CeGetUserNotification(handles[i],dwBytesNeeded,&dwBytesNeeded,pBuffer);
if( !bRet )
{
delete[] pBuffer;
pBuffer = NULL;
continue;
}//包含有关通知事件
CE_NOTIFICATION_INFO_HEADER *pcenih = (CE_NOTIFICATION_INFO_HEADER*)pBuffer;
if (pcenih->pcent->lpszApplication)
{
switch(pcenih->pcent->dwType)
{
case CNT_CLASSICTIME: //在此处判断是否为MS Calendar的就可以了。
}
}
}
}
括号不对的话,自已对应一下。
希望你成功!
http://blog.csdn.net/li_guotao2009年7月10日 9:47 -
上面的方法已经可以捕获到了,只是加一下判断就可以了。
#define CALENDAR_APP_NAME TEXT("CALENDAR.EXE")
#define CALENDAR_APP_NAME_ALLDAY TEXT("CALENDAR.EXE //allday")
case CNT_CLASSICTIME: //在此处判断是否为MS Calendar的就可以了。
判断是否等于:
if( wcscmp(pcenih->pcent->lpszApplication,CALENDAR_APP_NAME) == 0 ) //日历事件不是全天的判断
else if( memcmp(pcenih->pcent->lpszApplication,CALENDAR_APP_NAME_ALLDAY,wcslen(CALENDAR_APP_NAME_ALLDAY)) == 0 ) //日历事件是全天的判断
我是通过这种方法来判断的。
li_guotao- 已标记为答案 Jiong ShiMVP 2011年3月10日 14:38
2009年7月13日 9:46 -
呵呵,谢谢,我意思你的代码是同步的,那应该放到那个消息处理函数中.
还有#define CALENDAR_APP_NAME TEXT("CALENDAR.EXE")
#define CALENDAR_APP_NAME_ALLDAY TEXT("CALENDAR.EXE //allday")这些类型是如何知道的
比如还有其他几种.
还有CNT_CLASSICTIME宏是什么内容
您没有使用MSDN和google的习惯?
I'm a device.2009年7月14日 4:51