發表文章

目前顯示的是 3月, 2013的文章

在 C++ 使用 namespace

寫程式常常會碰到名稱 (類別、函式、變數 ... 等等) 衝突的問題 (因為英文懂得太少了),這個時候命名空間就可以發揮功用了,只要在自己的命名空間內,即使名稱跟別人一樣也不會衝突了。 同時在 Visual Studio 的 Class View 中,也會依據命名空間來分類,方便 Source Code 的管理。唯一的缺憾就是不能像  Net 一樣使用 "." 當作命名空間的名稱,所以只好用 "_" 來取代了!

好玩的 manifest

圖片
先前在  Tooltip Controls  曾經提到 Manifest,當時還不甚瞭解,而今天又碰到類似的問題,所以決定作個實驗來澄清一下! 首先找個專案來設定,把 Embed Manifest 設為 No ,也就是把 Manifest file 放在外面,不要內嵌到程式中

The Desktop Item Position Saver (DIPS) Utility 程式解析

圖片
前言: DIPS Utility ( Windows via C/C++, Fifth Edition Page 633) 是 Jeffrey Richter 示範 DLL Injection 的一個範例,內容讀起來對我來說有點複雜,所以做一下心得報告以加深印象。

【已解決】Global Hook 抓不到其它的程式

圖片
Hook 對我來說是一個全新的東西,它的概念有點像以前在寫 DOS TSR (常駐程式) 的作法,必須攔截原本的中斷,然後改成呼叫自己的中斷服務常式,但自己的服務常式中又必須呼叫原本的中斷,以達到插入自己程式碼到系統中目的。 我實作的是 WH_CBT 的 Hook,當一個視窗有動作時 (包含 activating, creating, destroying, minimizing, maximizing, moving, or sizing) 都會呼叫這個 Hook,根據 MSDN 的說明,把 CBTProc 放在 DLL 中可以達到 Global Hook 的目的。 但奇怪的是,在偵錯的過程中,我把中斷點設在 CBTProc,只有點到我自己的程式時才有反應,點到其它的程式完全沒反應,不是 Global Hook 嗎?為甚麼點別的程式會攔截不到呢?

SVN 心得

參考: Subversion(SVN)概念與工具介紹 Checkout (取出):與 Server 保持連結,可 Commit (送交) 與 Server 同步 Export (匯出):僅下載副本,未保持連結 Delete:刪除檔案, 若在 Checkout 的資料夾中直接刪除檔案,並不會刪除 SVN  上的檔案 ;必須用 SVN Delete  才可以 Branch/tag:產生分支,差別在 Branch  可以繼續修改,而 tag 不行 (Read only) Merge:選擇 Merge a range of revisions ,例如在 trunk ( Target ) 的 Working Copy 選擇合併 branch ( Source ) 的某一個版本,則合併的結果是在 Working Copy,branch 跟 trunk 不會有任何影響,除非 Commit 才會更新到 trunk。而在 Working Copy 可以用 Diff 比較差異的部份,決定採用那一個版本或共用。而 Merge 的方向可以是將 trunk 的變更同步更新到 branch;或者將完成的 branch 合併到 trunk (參考: 講解 Subversion 分支與合併:以 TortoiseSVN 為例 ) Switch:將 Working Copy 切換到不同的 branch 或 tag,但 Working Copy 如果未 Commit 有可能會出現衝突的情況 Revert : 還原到修改前的狀態 若要還原到先前已經 Commit 過的版本,可以先開啟 Log Messages,然後在要還原的版本上按滑鼠右鍵,選擇 "Revert to this revision",最後再重新 Commit 一次即可 建議在 Settings | General | Global ingore pattern 附加以下設定 (參考: What should be contained in a global source code control ignore pattern for Visual Studio 2010? ) *.ilk *.aps *.suo *.ncb *.user *.opt *.plg Debug Release debu

從 Visual Studio 2008 編譯 DevCon

圖片
Device Console (DevCon) Tool  是一個命令列下的工具程式,可以用來管理電腦上的 Driver,而我就需要它來重新啟動 Display driver。(節錄 實作步驟 ) DevCon 是 WDK  內的一項工具,為了要相容 Windows XP,所以安裝 WDK 7.1.0