您的位置:首页 > 其它

定时检查测试USB连接状态

2008-08-03 23:11 302 查看
导读:
  隔一段时间检测一次USB设备的连接状态,希望通过线程在后台运行,不知道该如何实现,
  还有一个数据处理需要的时间很长,也想用多线程来做,但也没有头绪,望指教,谢谢!
  这个问题第1个回答:
  Sleep不就行了。。。。
  这个问题第2个回答:
  会不会影响其他线程的执行效率呢?
  因为还有一个数据处理的线程在运行中
  这个问题第3个回答:
  起用多线程实现,不会影响主进程的操作。定时发送检测事件,线程接收事件处理,或者在线程中进行SLEEP死循环即可
  这个问题第4个回答:
  做一个后台服务.
  这个问题第5个回答:
  为什么需要监测,设备添加、删除都会有WM_DEVICECHANGE消息发给所有的窗口的。你处理这个消息即可。
  这个问题第6个回答:
  我这里有个检测USB的代码
  不过还是建议你不用多线程,因为这个检测不耗多少资源
  BOOL CCopyFileDlg::CheckSavePath()
  {
  //获取磁盘驱动器
  TCHAR szVolumeName[MAX_PATH]={0};
  GetLogicalDriveStrings(MAX_PATH,szVolumeName);
  TCHAR *pFirst=NULL,*pNext=NULL;
  pFirst=pNext=szVolumeName;
  //确定保存目录
  while( 1 )
  {
  pNext=pFirst+lstrlen(pFirst)+1;
  if( *pNext==_T('/0') )
  {
  //*pFirst=*pFirst+1;
  break;
  }
  pFirst=pNext;
  }
  m_strSavePath=pFirst;
  return TRUE;
  }
  //检查是否插入USB存储设备
  BOOL CCopyFileDlg::CheckUSB()
  {
  DWORD dwAttr=GetFileAttributes(m_strSavePath);
  if( dwAttr==0xFFFFFFFF )
  {
  return FALSE;
  }
  if( (dwAttr &FILE_ATTRIBUTE_DIRECTORY)==FILE_ATTRIBUTE_DIRECTORY )
  {
  if( GetDriveType(m_strSavePath)!=DRIVE_REMOVABLE )
  {
  //SendMessage(WM_CLOSE,0,0);
  return FALSE;
  }
  return TRUE;
  }
  else
  {
  return FALSE;
  }
  return FALSE;
  }
  这个问题第7个回答:
  做一个定时器,再配合WM_DEVICECHANGE来实现

本文转自
http://www.qqgb.com/Program/VC/VCJQ/Program_200160.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: