作業系統:Windows Server 2008 R2
內建開發環境(IDE):Microsoft Visual Studio 2010
開發語言:c#
檔案》建立》項目
.NET Framework可以選擇2.0版本,也可以選擇4.0版本;
項目類型選擇:Windows窗體應用程式
輸入項目名稱,确定

項目建立成功,如下圖:
修改窗體的“FormBorderStyle”屬性為“none”,實作一個沒有邊框的窗體
修改後視窗設計器中顯示如下:
依次按下圖修改其它屬性,屬性值黑體加粗的是修改過的
屬性說明:
ShowIcon=False,不顯示窗體的圖示;
ShowInTaskbar=False,使窗體不在Windows工作列中出現;
SizeGripStyle=Hide,禁用拖動窗體右下角可以改變大小的功能;
WindowsState=Minimized,視窗啟動後最小化;
設定完這些屬性後,編譯,運作,程式是在運作狀态,但是卻看不到程式的視窗;
這裡需要使用WindowsAPI
注冊熱鍵:RegisterHotKey
RegisterHotKey(HWND hWnd,int id,UINT fsModifiers,UINT vk);
取消熱鍵注冊:UnregisterHotKey
該函數釋放調用線程先前登記的熱鍵。
擷取熱鍵ID:GlobalAddAtom
隻适用于桌面應用程式。
向全局原子表添加一個字元串,并傳回這個字元串的唯一辨別符(原子ATOM)。
截圖視窗實際是一個沒有邊框,沒有菜單,沒有工具欄的一個全屏頂層視窗。
當按下熱鍵時,程式首先擷取整個螢幕的圖檔,儲存到“screenImage”變量中;然後添加遮罩層,将其設定為窗體的背景圖,将視窗大小設定為主螢幕的大小,顯示視窗;讓人感覺是在桌面上加一個半透明的遮罩層一樣。
代碼如下:
關閉視窗時,要取消熱鍵注冊,代碼如下:
到這裡,熱鍵注冊,截圖視窗的顯示等功能已經基本完成。
注意:測試本代碼時最好在窗體上添加一個按鈕,用于關閉或隐藏截圖視窗;因為截圖視窗是全屏的,不能響應ESC鍵,是以隻能通過任務管理器來結束程序退出。調試時最好是在窗體上添加一個Label控件來顯示需要的變量資訊,因為截圖視窗是頂層的全屏視窗,斷點被命中時根本沒辦法操作VS。