西西軟件園多重安全檢測(cè)下載網(wǎng)站、值得信賴的軟件下載站!
西西首頁(yè) 電腦軟件 安卓軟件 電腦游戲 安卓游戲 排行榜 專題合集

Source Insight 3.X 標(biāo)簽插件

v1.0 免費(fèi)版
  • Source Insight 3.X 標(biāo)簽插件v1.0 免費(fèi)版
  • 軟件大小:13KB
  • 更新時(shí)間:2013-01-24 01:45
  • 軟件語(yǔ)言:中文
  • 軟件廠商:
  • 軟件類別:國(guó)產(chǎn)軟件 / 免費(fèi)軟件 / 編程輔助
  • 軟件等級(jí):3級(jí)
  • 應(yīng)用平臺(tái):WinAll, WinXP
  • 官方網(wǎng)站:http://elephantinaurance.com
  • 應(yīng)用備案:
好評(píng):50%
壞評(píng):50%

軟件介紹

Source Insight可以說(shuō)是一款程序員必備的開(kāi)發(fā)/閱讀源碼工具,美中不足的是SI沒(méi)有標(biāo)簽欄,多個(gè)源碼之間切換很不方便,于是我就乘閑暇之余寫了該作品sihook:標(biāo)簽插件;不過(guò)嚴(yán)格意義上來(lái)說(shuō)sihook并不算是插件,而是一個(gè)內(nèi)掛:)

sihook實(shí)現(xiàn)原理:

1,插件的自動(dòng)加載msimg32

幾年前dll都是用CreateRemoteThread方法來(lái)加載,就是必須要有個(gè)exe的loader,而現(xiàn)在有了msimg32延遲加載漏洞,腰不酸了腿不疼了,加載外掛更方便了:),具體原理我就不多介紹了,網(wǎng)上一搜一大把.

2,肢解SI之siframe

SI主窗體是siframe,由于msimg32是延遲加載,由hook CreateWindowEx調(diào)試發(fā)現(xiàn),當(dāng)我們的dll載入的時(shí)候,siframe和mdiclient已經(jīng)創(chuàng)建了,而si_sw未創(chuàng)建,那么我們直接得到當(dāng)前進(jìn)程的HWND就是siframe的HWND了,然后SetWindowLong替換窗口過(guò)程,只關(guān)心WM_SETTEXT消息,WM_SETTEXT設(shè)置標(biāo)題的時(shí)候我們?cè)诤竺婕由?quot;加強(qiáng)版"的字樣,然后以siframe為父窗體創(chuàng)建我們的systabcontrol32控件.

3,肢解SI之mdiclient

mdiclient是SI中最重要的一個(gè)窗口,它管理著源碼窗口的創(chuàng)建銷毀,首先用FindWindowEx得到mdiclinet的句柄,然后SetWindowLong替換窗口過(guò)程,這里面要處理的消息有WM_WINDOWPOSCHANGING;WM_MDICREATE;WM_MDIDESTROY;WM_MDIACTIVATE;

WM_WINDOWPOSCHANGING是窗口大小改變的消息,這時(shí)候要處理tab的大小和mdiclient自身的大小,要在oldwndproc執(zhí)行之前處理;

WM_MDICREATE;WM_MDIDESTROY;WM_MDIACTIVATE;要在oldwndproc執(zhí)行之后處理,這樣就可以直接拿到子窗口的句柄處理了.

WM_MDICREATE消息用FindWindowEx得到新創(chuàng)建的si_sw源碼窗口的句柄,替換窗口過(guò)程

WM_MDIDESTROY消息直接能拿到HWND,同步刪除tab標(biāo)簽

WM_MDIACTIVATE也能直接拿到HWND,同步激活tab標(biāo)簽

4,肢解SI之si_sw

si_sw子窗口就是源碼顯示窗口了,這個(gè)窗口我們只關(guān)心WM_SETTEXT消息,得到當(dāng)前源碼的標(biāo)題(包括標(biāo)題的變更),直接顯示在tab上,這樣就不用一個(gè)定時(shí)器去不停的比較了;

5,tabctl控件

為了精簡(jiǎn),直接用sdk編程,只能用系統(tǒng)自帶的systabcontrol32控件來(lái)做標(biāo)簽了,我封裝了一層接口方便上層調(diào)用,包括增加,刪除,雙擊關(guān)閉,改變選項(xiàng)卡顏色,調(diào)整位置高度等.說(shuō)起來(lái)這是我第一次用systabcontrol32這個(gè)控件,做的很難看,如果有sdk美化高手知道怎么做的漂亮一點(diǎn),可以給我留言,再此先表示感謝.另外雙擊關(guān)閉標(biāo)簽的同時(shí)要關(guān)閉源碼窗口,看orbit的介紹要發(fā)WM_CLOSE消息,而且他的代碼確實(shí)是這么實(shí)現(xiàn)的,并且有效,但是我怎么試都不靈,最后用OD一調(diào)試,發(fā)現(xiàn)SI自己發(fā)的是WM_SYSCOMMAND消息,WPARAM參數(shù)是SC_CLOSE,于是我也用SC_CLOSE消息來(lái)關(guān)閉文檔:)

OK,基本原理就是上面幾點(diǎn),理清楚了制作標(biāo)簽內(nèi)掛就很容易了,整個(gè)工程不算tabctl控件源碼不超過(guò)10個(gè)函數(shù)。

安裝于卸載:

安裝:解壓sihook.zip兩個(gè)dll放到SI目錄即可

刪除:刪除SI目錄msimg32.dll和sihook.dll即可

本插件將開(kāi)源,取之于網(wǎng)絡(luò),反饋于網(wǎng)絡(luò),大家?guī)屯扑]一個(gè)能訪問(wèn)的代碼服務(wù)器,不用的,google code老抽,github貌似也掛了.

軟件標(biāo)簽: Source Insight

其他版本下載

發(fā)表評(píng)論

昵稱:
表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
查看所有(0)條評(píng)論 > 字?jǐn)?shù): 0/500

TOP
軟件下載