首先,我們看看這兩個圖,如圖1所示。
一秒前:
一秒後:
怎麼樣?檔案夾變成資源回收筒了!不信?雙擊進入試試,裡面真的是資源回收筒哦。神奇吧!看過本文,你不但能變檔案夾為資源回收筒,還可以將它變成各種稀奇古怪的東東!
首先要說明一下原理:在Windows資源管理員中,Desktop.ini和Folder.htt中定義了檔案夾的屬性,在Windows 9X下,我們可以在檔案夾中建一個Desktop.ini,並在其中輸入如下代碼:
[.ShellClassInfo]
Clisd={645FF040-5081-101B-9F08-00AA002F954E}
這樣檔案夾就變成了資源回收筒,但是在Windows XP/2003中就失效了。沒關係,另有辦法:我們對著檔案夾按下F2,改成“×××.{645FF040-5081-101B-9F08-00AA002F954E}”(不要引號),也變形了吧?!這其實也改變了檔案夾的屬性,效果是一樣的。通過資料知道,這其實是運用了微軟的Active Desktop技術。下面我們看看如何利用編程實現它。
系統內容:Windows Server 2003 Enterprice Eidtion
開發工具:VC++ 6.0
本程式是用SDK寫的,這篇文章也是給像我這樣的菜菜看的,現在很多學編程的菜菜們都愛用VB之類的RAD工具或是一頭鑽進MFC,以至於編了N年還不知道什麼是Windows訊息迴圈,把十分平常的API函數調用(如SendMessage,FindWindows之類)奉之為“技巧”。我沒有鄙視的意思,也不是說號召大家以後都這樣編程,畢竟用SDK開發太慢了,我只是覺得要想在Windows編程得到較大進步,學習Win32下的SDK編程是不應該省略的,若只會Click處理事件,而不知道其中IDE到底幹了什麼,那就會阻礙你的進步了!
下面簡略說明一下程式流程:
WinMain函數,程式的入口:
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE ,hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
if (-1 == DialogBox(hInstance, MAKEINTRESOURCE(IDD_MAIN), NULL, Main_Proc))
{
MessageBox(NULL, "載入對話方塊出錯!" , "", MB_OK);
// MessageBox函數,彈出一個預定義訊息框,第一個參數是表單控制代碼,第2個參數是訊息本文,第三個參數是標題,最後是訊息框類型,這裡是指有一個確定按鈕的訊息框.
}
return 0;
}