各位觀眾,今天我們講的是文件夾的變形大法。
首先,我們看看這兩個圖,如圖1所示。
一秒前:
一秒后:
怎么樣?文件夾變成回收站了!不信?雙擊進(jìn)入試試,里面真的是回收站哦。神奇吧!看過本文,你不但能變文件夾為回收站,還可以將它變成各種稀奇古怪的東東!
首先要說明一下原理:在Windows資源管理器中,Desktop.ini和Folder.htt中定義了文件夾的屬性,在Windows 9X下,我們可以在文件夾中建一個Desktop.ini,并在其中輸入如下代碼:
[.ShellClassInfo]
Clisd={645FF040-5081-101B-9F08-00AA002F954E}
這樣文件夾就變成了回收站,但是在Windows XP/2003中就失效了。沒關(guān)系,另有辦法:我們對著文件夾按下F2,改成“×××.{645FF040-5081-101B-9F08-00AA002F954E}”(不要引號),也變形了吧?!這其實也改變了文件夾的屬性,效果是一樣的。通過資料知道,這其實是運用了微軟的Active Desktop技術(shù)。下面我們看看如何利用編程實現(xiàn)它。
系統(tǒng)環(huán)境:Windows Server 2003 Enterprice Eidtion
開發(fā)工具:VC++ 6.0
本程序是用SDK寫的,這篇文章也是給像我這樣的菜菜看的,現(xiàn)在很多學(xué)編程的菜菜們都愛用VB之類的RAD工具或是一頭鉆進(jìn)MFC,以至于編了N年還不知道什么是Windows消息循環(huán),把十分平常的API函數(shù)調(diào)用(如SendMessage,F(xiàn)indWindows之類)奉之為“技巧”。我沒有鄙視的意思,也不是說號召大家以后都這樣編程,畢竟用SDK開發(fā)太慢了,我只是覺得要想在Windows編程得到較大進(jìn)步,學(xué)習(xí)Win32下的SDK編程是不應(yīng)該省略的,若只會Click處理事件,而不知道其中IDE到底干了什么,那就會阻礙你的進(jìn)步了!
下面簡略說明一下程序流程:
WinMain函數(shù),程序的入口:
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函數(shù),彈出一個預(yù)定義消息框,第一個參數(shù)是窗體句柄,第2個參數(shù)是消息正文,第三個參數(shù)是標(biāo)題,最后是消息框類型,這里是指有一個確定按鈕的消息框.
}
return 0;
}
首先,我們看看這兩個圖,如圖1所示。
一秒前:
一秒后:
怎么樣?文件夾變成回收站了!不信?雙擊進(jìn)入試試,里面真的是回收站哦。神奇吧!看過本文,你不但能變文件夾為回收站,還可以將它變成各種稀奇古怪的東東!
首先要說明一下原理:在Windows資源管理器中,Desktop.ini和Folder.htt中定義了文件夾的屬性,在Windows 9X下,我們可以在文件夾中建一個Desktop.ini,并在其中輸入如下代碼:
[.ShellClassInfo]
Clisd={645FF040-5081-101B-9F08-00AA002F954E}
這樣文件夾就變成了回收站,但是在Windows XP/2003中就失效了。沒關(guān)系,另有辦法:我們對著文件夾按下F2,改成“×××.{645FF040-5081-101B-9F08-00AA002F954E}”(不要引號),也變形了吧?!這其實也改變了文件夾的屬性,效果是一樣的。通過資料知道,這其實是運用了微軟的Active Desktop技術(shù)。下面我們看看如何利用編程實現(xiàn)它。
系統(tǒng)環(huán)境:Windows Server 2003 Enterprice Eidtion
開發(fā)工具:VC++ 6.0
本程序是用SDK寫的,這篇文章也是給像我這樣的菜菜看的,現(xiàn)在很多學(xué)編程的菜菜們都愛用VB之類的RAD工具或是一頭鉆進(jìn)MFC,以至于編了N年還不知道什么是Windows消息循環(huán),把十分平常的API函數(shù)調(diào)用(如SendMessage,F(xiàn)indWindows之類)奉之為“技巧”。我沒有鄙視的意思,也不是說號召大家以后都這樣編程,畢竟用SDK開發(fā)太慢了,我只是覺得要想在Windows編程得到較大進(jìn)步,學(xué)習(xí)Win32下的SDK編程是不應(yīng)該省略的,若只會Click處理事件,而不知道其中IDE到底干了什么,那就會阻礙你的進(jìn)步了!
下面簡略說明一下程序流程:
WinMain函數(shù),程序的入口:
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函數(shù),彈出一個預(yù)定義消息框,第一個參數(shù)是窗體句柄,第2個參數(shù)是消息正文,第三個參數(shù)是標(biāo)題,最后是消息框類型,這里是指有一個確定按鈕的消息框.
}
return 0;
}