[C#]A Brief Introduction to the PE File Format and PE File Inspection

PE檔案是Portable Executable的簡稱,是windows系統中任何可執行模組或者DLL的檔案格式。這邊要介紹一下如何透過程式檢測檔案是否為合法的PE檔,因此必須針對PE檔的格式做些初步的介紹,就讓我們先來看一下PE檔的格式圖吧: ...

November 6, 2013 · Larry Nung

[C#]A Simple Backoff Window Implementation Class

在無線網路的領域中,若是節點間要進行傳輸,會試圖嚐試發送RTS訊號,當接收端收到且允許傳送時,接收端會發送CTS訊號,傳送端就會知道可以進行傳送的動作。但若是傳送端發送了RTS後過段時間沒收到CTS訊號,代表訊號被碰撞掉了,這時會挑選個backoff值,決定要多久後再重試傳輸。這邊的backoff值會隨著碰撞而變大backoff值的區間,也就是無線網路領域所謂的Backoff window機制。 ...

November 6, 2013 · Larry Nung

[C#]Access Library Data with the Windows API Code Pack

要用程式存取媒體櫃內存放的資料,我們大概可以有兩種方法,一種是自行解析,一種則是使用包好的函式庫(像是Windows API Code Pack)去作控制。之所以能夠自行解析是因為媒體櫃的資訊是存放在附檔名為.library-ms的XML檔案中。 ...

November 6, 2013 · Larry Nung

[C#]Add an Auto-Update Mechanism to Your App with NetSparkle

NetSparkle是從Mac的Sparkle移值而來的,一個號稱易於使用的自動更新開源框架。雖然號稱易於使用,但相關的文件真是少的可憐,實際使用上也令我卡關滿久的一個框架(它的類別成員與類別我真的無法一眼看懂它想要幹嘛…orz)。Anyway~這邊隨手做個簡單的整理與記錄。 ...

November 6, 2013 · Larry Nung

[C#]Add an Error-Reporting Mechanism with the NBug Library

NBug是一開放源碼的函式庫,可輕鬆快速的為應用程式加上錯誤回報機制的,當錯誤發生時NBug能幫我們自動產生開發人員所需的錯誤報告,內含詳細的錯誤內容資訊與MiniDump File,錯誤報告會以壓縮檔的方式儲存在指定位置,沒指定的話通常是存放在當前目錄下。 ...

November 6, 2013 · Larry Nung

[C#]Adjust a Control's Border Color with ControlPaint.DrawBorder

最近跟UX Team合作體驗到能將設計好的UI完美呈現真是考驗程式人員的能力,UX Team的設計人員考量的細節都跟程式開發人員不同,在某些細節上比程式人員都還講究,就像是控制項的邊框顏色不對都不行。但是幾乎所有的控制項都不具備設定邊框顏色的能力,這該怎麼辦呢?想來想去都只能自己下去繪製控制項的邊框。 ...

November 6, 2013 · Larry Nung

[C#]BigInteger

今天看書才知道原本.NET 3.5中偷藏了一個BinInteger類型,可用來顯示很長的整數。該類型在.NET Framework 3.5 Beta1中就已被加入,但是Release版中該類型被改為Internal類型,導致無法直接使用。根據網路上的資料顯示,據說是微軟認為該類型還有很多問題,因此暫不開放。但我們仍可透過.NET反射機制去使用它。 ...

November 6, 2013 · Larry Nung

[C#]Breaking the 64-Character Limit of NotifyIcon.Text

最近在寫程式時需要將一些資訊顯示在NotifyIcon上,才注意到NotifyIcon.Text有64個字元的限制。 ...

November 6, 2013 · Larry Nung

[C#]Build a Visual Studio-like Output Window Using TraceListener

前陣子花了點時間在為開發中的產品加強除錯的功能,想要讓開發上發生的問題能直接在產品上就一目而然的看到,而不用另行開啟DebugView或是Log來看。簡單地說想要為產品加上類似是Visual Studio的輸出視窗,或者是DebugView類似的功能,能夠很即時的偵測並顯示出系統發出的Debug或是Trace訊息。為了達到這個需求,筆者用內建的TraceListener簡單的試做了一下,這篇隨手紀錄一下。 ...

November 6, 2013 · Larry Nung

[C#]Command Line Parser Library

前陣子為程式加上命令列參數去啟動除錯的功能,先暫時套用筆者之前看到的Brahma Command Line Parser來做到這個需求,用了一陣子還是覺得卡手卡腳的,明明只想帶個簡單的參數進去,卻因為用的solution變得必須要帶較為複雜的參數。因此還是花了一下時間用Command Line Parser Library將他重寫,這篇筆者就稍微簡單的紀錄一下Command Line Parser Library的使用方式。 ...

November 6, 2013 · Larry Nung