请问IE的收藏夹有没有事件触发?或者说有什么连接点可以知道??DISPID_ADDFAVORITE吗? IE,当添加到收藏夹的时候,系统应该会知道的吧? 那么有没有什么消息被触发? 或者说哪个连接点里有? 我看DISPID_ADDFAVORITE,但是不知道他在哪个连接点里,MSDN都找不到 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 IShellUIHelper接口有AddFavorite方法 我曾用单独的一个线程监视收藏夹目录。如果有新的记录,则做相应的处理。在下面的片段中用到了两个事件。一个是由主线程传入的,用于通知子线程什么时候退出。另一个事件用于检测收藏夹是否有改变。////先检测一次是否有新的条目,可能第一遍时间会很长,期间要检测一次退出事件。//再对目录进行监视unsigned __stdcall FunctionForFavoriteMonitor( void* pArguments ){ //由主线程传入的参数 CParam_Favorite_Monitor* pParam=(CParam_Favorite_Monitor*)pArguments; //取得收藏夹所在的目录 CString szPath; CFavorite::GetFavoritePathName(szPath); //先执行一遍检测 CFavorite::CheckFavorites(szPath,pParam->m_hEventQuit); //再等待两个事件中的一个返回 DWORD dwWaitStatus; HANDLE dwChangeHandles[2]; dwChangeHandles[0]=pParam->m_hEventQuit; //退出事件 //新建收藏夹目录的监视事件 HANDLE hNotify=FindFirstChangeNotification(szPath,TRUE,FILE_NOTIFY_CHANGE_LAST_WRITE); while(INVALID_HANDLE_VALUE!=hNotify) { // dwChangeHandles[1]=hNotify; //检测两个事件是否有一个返回 dwWaitStatus = WaitForMultipleObjects(2, dwChangeHandles, FALSE, INFINITE); // if(dwWaitStatus==WAIT_OBJECT_0+1) { //先取得下一个通知句柄 if(!FindNextChangeNotification(hNotify)) break; //check CFavorite::CheckFavorites(szPath,pParam->m_hEventQuit); } else if(dwWaitStatus==WAIT_OBJECT_0) { //退出 break; } else { //退出 break; } } //close handle if(hNotify!=INVALID_HANDLE_VALUE) { FindCloseChangeNotification(hNotify); } //再次等待 ::WaitForSingleObject(pParam->m_hEventQuit,INFINITE); //通知主线程可以正常退出 ::SetEvent(pParam->m_hEventQuit_back); return 0;}=============================全新设计的CSDN助手,支持CSDN所有功能,支持监视、收藏、历史http://community.csdn.net/expert/topicview1.asp?id=4806193 MFC对话框 MFC调用com组件 如何让线移动? 哪有msdn library 免费下载啊? 高分求用SMTP协议实现发送邮件的类CSMTP 一个算法的问题 关于在CStatic上显示图片的问题(在线等侯) 怎样改变一个DialogBar的背景颜色 ?很急,解决了马上结贴! ADO问题,高手请进!!!!!!!! ado编写的程序在98下可以用!为什么到了nt下就不能运行呢? 请问在vc中画sin曲线,可以用控件吗(在线) 100分为辞职买个理由~
一个是由主线程传入的,用于通知子线程什么时候退出。
另一个事件用于检测收藏夹是否有改变。
//
//先检测一次是否有新的条目,可能第一遍时间会很长,期间要检测一次退出事件。
//再对目录进行监视
unsigned __stdcall FunctionForFavoriteMonitor( void* pArguments )
{
//由主线程传入的参数
CParam_Favorite_Monitor* pParam=(CParam_Favorite_Monitor*)pArguments; //取得收藏夹所在的目录
CString szPath;
CFavorite::GetFavoritePathName(szPath); //先执行一遍检测
CFavorite::CheckFavorites(szPath,pParam->m_hEventQuit); //再等待两个事件中的一个返回
DWORD dwWaitStatus;
HANDLE dwChangeHandles[2];
dwChangeHandles[0]=pParam->m_hEventQuit; //退出事件
//新建收藏夹目录的监视事件
HANDLE hNotify=FindFirstChangeNotification(szPath,TRUE,FILE_NOTIFY_CHANGE_LAST_WRITE);
while(INVALID_HANDLE_VALUE!=hNotify)
{
//
dwChangeHandles[1]=hNotify; //检测两个事件是否有一个返回
dwWaitStatus = WaitForMultipleObjects(2, dwChangeHandles,
FALSE, INFINITE); //
if(dwWaitStatus==WAIT_OBJECT_0+1)
{
//先取得下一个通知句柄
if(!FindNextChangeNotification(hNotify))
break; //check
CFavorite::CheckFavorites(szPath,pParam->m_hEventQuit); }
else if(dwWaitStatus==WAIT_OBJECT_0)
{
//退出
break;
}
else
{
//退出
break;
}
} //close handle
if(hNotify!=INVALID_HANDLE_VALUE)
{
FindCloseChangeNotification(hNotify);
} //再次等待
::WaitForSingleObject(pParam->m_hEventQuit,INFINITE); //通知主线程可以正常退出
::SetEvent(pParam->m_hEventQuit_back);
return 0;
}=============================
全新设计的CSDN助手,支持CSDN所有功能,支持监视、收藏、历史
http://community.csdn.net/expert/topicview1.asp?id=4806193