• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            我住包子山

            this->blog.MoveTo("blog.baozishan.in")

            向Vista學(xué)習(xí),實(shí)現(xiàn)XP下重命名文件忽略選取擴(kuò)展名

            image   這兩天對(duì)于HOOK的技術(shù)有了一個(gè)入門的學(xué)習(xí),用過(guò)vista的同學(xué)會(huì)發(fā)現(xiàn)vista重命名一個(gè)文件比如vista.exe,他會(huì)自動(dòng)選中vista忽略掉擴(kuò)展名,帶來(lái)比較方便的用戶體驗(yàn),學(xué)了一些hook我也想試試xp下能不能做這樣的事情。于是參考一些文章,勉強(qiáng)實(shí)現(xiàn)了,有一點(diǎn)兒缺陷(請(qǐng)看最后)。

               經(jīng)過(guò)觀察我發(fā)現(xiàn)重命名時(shí),資源管理器會(huì)向他的子窗口listview發(fā)送一個(gè)LVM_EDITLABELA的控制消息,所以我使用了WH_CALLWNDPROCRET類型的全局掛鉤,這個(gè)掛鉤可以在sendmessage結(jié)束以后處理傳送和返回的數(shù)據(jù)。發(fā)送了LVM_EDITLABELA消息后,會(huì)在lParam得到一個(gè)編輯窗口的句柄,只需之后對(duì)這個(gè)窗口發(fā)送EM_SETSEL控制消息就能夠改變重命名時(shí)候的高亮區(qū)域。hook回調(diào)函數(shù)如下:

               1: static LRESULT CALLBACK msghook(UINT nCode, WPARAM wParam, LPARAM lParam)
               2: {
               3:     if(nCode < 0)
               4:     {
               5:         CallNextHookEx(hook,nCode,wParam,lParam);
               6:         return 0;
               7:     }
               8:     LPCWPRETSTRUCT msg = (LPCWPRETSTRUCT) lParam;
               9:     if(msg->message == LVM_EDITLABELA || msg->message == LVM_EDITLABELW)
              10:     {
              11:         GetClassName(msg->hwnd,className,255);
              12:         GetWindowText(msg->hwnd,wndName,255);
              13:         if(0==_tcscmp(className,_TEXT("SysListView32")))
              14:         {
              15:             if(0==_tcscmp(wndName,_TEXT("FolderView")))
              16:             {
              17:                 hEditWnd = (HWND)msg->lResult;
              18:                 GetWindowText(hEditWnd,className,255);//暫時(shí)放入className
              19:                 SendMessage(hEditWnd,EM_SETSEL,0,findDot(className));
              20:             }
              21:         }
              22:     }
              23:     return CallNextHookEx(hook,nCode,wParam,lParam);
              24: }

             

            className與wndName是兩個(gè)TCHAR數(shù)組,從hwnd獲取信息存在那里進(jìn)行判斷是否為Shell中的listview,避免在其它使用listview的應(yīng)用程序里會(huì)進(jìn)行之后的處理。

               工程文件下載,點(diǎn)這里

               程序下載,點(diǎn)這里

               使用方法,編譯以后直接運(yùn)行GRnamer就可以,如果不想用了,從任務(wù)管理器把它關(guān)閉,沒(méi)有做trayicon之類的東西,因?yàn)橹皇莻€(gè)demo。

            image   最后說(shuō)一下缺陷,缺陷就是這樣做沒(méi)有辦法判斷文件與文件夾的區(qū)別,所以會(huì)有如圖的效果,我自己沒(méi)有想到解決的方法,請(qǐng)達(dá)人們指點(diǎn)。:)

             

               參考的文章:

            msdn Hooks hook的全部參考

            codeproject Hooks and DLLs 我的hook dll都是照著它寫的。

            posted on 2008-05-17 02:05 Gohan 閱讀(3023) 評(píng)論(17)  編輯 收藏 引用 所屬分類: C++MFC/SDK

            Feedback

            # re: 向Vista學(xué)習(xí),實(shí)現(xiàn)XP下重命名文件忽略選取擴(kuò)展名[未登錄](méi) 2008-05-17 10:34 Rich

            學(xué)習(xí)了。  回復(fù)  更多評(píng)論   

            # re: 向Vista學(xué)習(xí),實(shí)現(xiàn)XP下重命名文件忽略選取擴(kuò)展名 2008-05-17 10:41 blankyao

            學(xué)習(xí)一下~  回復(fù)  更多評(píng)論   

            # re: 向Vista學(xué)習(xí),實(shí)現(xiàn)XP下重命名文件忽略選取擴(kuò)展名 2008-05-17 10:42 Leewings

            這么麻煩....
            ubuntu自動(dòng)實(shí)現(xiàn)了..哈哈.~  回復(fù)  更多評(píng)論   

            # re: 向Vista學(xué)習(xí),實(shí)現(xiàn)XP下重命名文件忽略選取擴(kuò)展名 2008-05-17 10:50 Gohan

            @Leewings
            呵呵,是有點(diǎn)麻煩:)  回復(fù)  更多評(píng)論   

            # re: 向Vista學(xué)習(xí),實(shí)現(xiàn)XP下重命名文件忽略選取擴(kuò)展名 2008-05-17 11:27 陳梓瀚(vczh)

            讀文件的attribute是可以知道這東西是文件還是文件夾的。至于路徑,去hack資源管理器的那個(gè)下拉列表應(yīng)該看得到的吧?這個(gè)我沒(méi)干過(guò),不知道行不行。  回復(fù)  更多評(píng)論   

            # re: 向Vista學(xué)習(xí),實(shí)現(xiàn)XP下重命名文件忽略選取擴(kuò)展名 2008-05-17 12:09 Gohan

            @陳梓瀚(vczh)
            恩,這樣應(yīng)該能得到路徑,不過(guò)可能對(duì)于桌面上的文件就不支持了,還有問(wèn)題是如果沒(méi)有顯示地址工具欄是找不到那個(gè)combolbox的。以后等學(xué)好了shell 擴(kuò)展可能能更完善的解決。  回復(fù)  更多評(píng)論   

            # re: 向Vista學(xué)習(xí),實(shí)現(xiàn)XP下重命名文件忽略選取擴(kuò)展名 2008-05-18 23:29 閑耘

            Win2k3下無(wú)反應(yīng)。  回復(fù)  更多評(píng)論   

            # re: 向Vista學(xué)習(xí),實(shí)現(xiàn)XP下重命名文件忽略選取擴(kuò)展名 2008-05-19 12:42 Gohan

            @閑耘
            哦?可能是2003加強(qiáng)了安全吧,我沒(méi)有用過(guò)2003,這個(gè)demo只在xp下試用通過(guò)  回復(fù)  更多評(píng)論   

            # re: 向Vista學(xué)習(xí),實(shí)現(xiàn)XP下重命名文件忽略選取擴(kuò)展名 2008-05-19 17:07 多多

            @Gohan

            桌面上也可以得到路徑。用

            %USERPROFILE%\桌面

            即可~  回復(fù)  更多評(píng)論   

            # re: 向Vista學(xué)習(xí),實(shí)現(xiàn)XP下重命名文件忽略選取擴(kuò)展名 2008-05-19 19:08 Gohan

            @多多
            是的,謝謝,對(duì)了,桌面好像可以也可通過(guò)一個(gè)shell相關(guān)的函數(shù)返回pidl來(lái)得到。等以后練習(xí)練習(xí)  回復(fù)  更多評(píng)論   

            # re: 向Vista學(xué)習(xí),實(shí)現(xiàn)XP下重命名文件忽略選取擴(kuò)展名 2008-05-19 19:11 多多

            @Gohan

            這個(gè)我也有印象,因?yàn)樽烂婢褪荅xplorer的一個(gè)窗口,可以獲得他的句柄。  回復(fù)  更多評(píng)論   

            # re: 向Vista學(xué)習(xí),實(shí)現(xiàn)XP下重命名文件忽略選取擴(kuò)展名 2008-05-20 21:33 Gohan

            @多多
            好的,多多交流  回復(fù)  更多評(píng)論   

            # re: 向Vista學(xué)習(xí),實(shí)現(xiàn)XP下重命名文件忽略選取擴(kuò)展名 2009-02-22 15:41 einheria

            有一個(gè)缺點(diǎn),F(xiàn)2和右鍵重命名都可以實(shí)現(xiàn),慢雙擊發(fā)起的重命名還是高亮選取全部

            LZ這個(gè)程序很好,我已經(jīng)設(shè)為開(kāi)機(jī)自動(dòng)運(yùn)行了,希望可以改進(jìn)!  回復(fù)  更多評(píng)論   

            # re: 向Vista學(xué)習(xí),實(shí)現(xiàn)XP下重命名文件忽略選取擴(kuò)展名 2009-02-26 11:46 Gohan

            @einheria
            謝謝你的支持,這個(gè)小程序只是一個(gè)小練手,不知道啥時(shí)候能夠再改改了。高檔的軟件有很多,QTTabbar也附有這個(gè)功能。  回復(fù)  更多評(píng)論   

            # re: 向Vista學(xué)習(xí),實(shí)現(xiàn)XP下重命名文件忽略選取擴(kuò)展名 2010-04-08 12:19 個(gè)

            多謝!!!  回復(fù)  更多評(píng)論   

            # re: 向Vista學(xué)習(xí),實(shí)現(xiàn)XP下重命名文件忽略選取擴(kuò)展名 2011-05-26 16:07 free keylogger download

            win7 下怎么不能正確判斷呢?
            情樓主幫忙看一下,多謝  回復(fù)  更多評(píng)論   

            # re: 向Vista學(xué)習(xí),實(shí)現(xiàn)XP下重命名文件忽略選取擴(kuò)展名 2011-05-26 16:09 free auto bulk mail sender download

            多謝分享,非常實(shí)用的一個(gè)feature!  回復(fù)  更多評(píng)論   

            欧美午夜精品久久久久免费视| 99久久精品费精品国产| 久久人人爽人人爽人人av东京热| 亚洲日本久久久午夜精品| 97精品依人久久久大香线蕉97| 欧洲成人午夜精品无码区久久 | 久久精品国产网红主播| 久久久精品免费国产四虎| 中文字幕精品久久久久人妻| 精品久久久久久国产| 93精91精品国产综合久久香蕉 | 精品久久久中文字幕人妻| 国产精品视频久久久| 精品久久久无码人妻中文字幕 | 亚洲精品高清久久| 亚洲精品乱码久久久久久中文字幕 | 伊人久久大香线蕉影院95| 狠狠色丁香久久综合五月| 高清免费久久午夜精品| 久久99精品久久久久久野外| 大蕉久久伊人中文字幕| 青青草原1769久久免费播放| 亚洲一级Av无码毛片久久精品| 996久久国产精品线观看| 亚洲人成网亚洲欧洲无码久久 | 精品久久久久久久无码 | 99久久精品国产麻豆| 日产精品久久久久久久| 久久久久亚洲精品中文字幕| 日本福利片国产午夜久久| 久久久久人妻精品一区二区三区 | 久久国产精品久久精品国产| 国产激情久久久久久熟女老人| 无码乱码观看精品久久| 久久久受www免费人成| 亚洲国产精品热久久| 嫩草影院久久国产精品| 青青青国产精品国产精品久久久久 | 亚洲天堂久久精品| 一本久久a久久精品综合夜夜| 青青青国产成人久久111网站|