程序:个性化文件夹的小工具
优质
小牛编辑
138浏览
2023-12-01
能更改XP文件夹和驱动器的图标,背景提示文字等的小工具。
用NSIS编写,附源代码:
;NSIS脚本 ;文件夹个性化 ;编写:ansifa ;E-mail: ansifa@163.com ;__________________________________ SetCompressor /SOLID /FINAL lzma XPStyle on CRCCHECK OFF !include "MUI.nsh" !include "WordFunc.nsh" !insertmacro WordReplace InstallButtonText "设置(&S)" MiscButtonText "" "" "退出(&X)" "" !insertmacro WordFind !insertmacro MUI_LANGUAGE "SimpChinese" SetFont /LANG=${LANG_SimpChinese} "tahoma" 8 Name "文件夹个性化" OutFile "个性化文件夹.exe" Caption "文件夹个性化向导" Icon ICON.ico BrandingText "文件夹个性化向导-编写:ansifa" ;程序版本信息 VIProductVersion "1.0.0.0" VIAddVersionKey /LANG=${LANG_SIMPCHINESE} "ProductName" "文件夹个性化向导" VIAddVersionKey /LANG=${LANG_SIMPCHINESE} "Comments" "能更改XP文件夹和驱动器的图标,背景提示文字等的小工具。" VIAddVersionKey /LANG=${LANG_SIMPCHINESE} "CompanyName" "ansifa" VIAddVersionKey /LANG=${LANG_SIMPCHINESE} "LegalTrademarks" "ansifa" VIAddVersionKey /LANG=${LANG_SIMPCHINESE} "LegalCopyright" "Copyright (C) 2007 ansifa" VIAddVersionKey /LANG=${LANG_SIMPCHINESE} "FileDescription" "文件夹个性化向导" VIAddVersionKey /LANG=${LANG_SIMPCHINESE} "OriginalFilename" "文件夹个性化向导.exe" VIAddVersionKey /LANG=${LANG_SIMPCHINESE} "InternalName" "文件夹个性化向导.exe" VIAddVersionKey /LANG=${LANG_SIMPCHINESE} "FileVersion" "1.0.0.0" Var INI Var HWND Page Custom ShowCustom LeaveCustom Page instfiles Function .onInit BringToFront InitPluginsDir GetTempFileName $INI $PLUGINSDIR File /oname=$INI "个性化文件夹.ini" strcpy $R9 "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\IndividuationFolder" ReadRegStr $1 HKCU $R9 "BG" ReadRegStr $2 HKCU $R9 "ICON" ReadRegStr $3 HKCU $R9 "FOLDER" ReadRegStr $4 HKCU $R9 "COLOR" ReadRegStr $5 HKCU $R9 "TIP" ReadRegStr $7 HKCU $R9 "run" StrCmp "$7" "" +1 +3 MessageBox MB_ICONINFORMATION|MB_YESNO "欢迎使用文件夹个性化向导,你可以使用此向导更改文件夹和驱动器的图标,背景提示文字等.$\n$\n$\n而且此向导已经安装至你的系统,以后右击要更改的文件夹>个性化文件夹 也可以打开此程序并指定要更改的文件夹是刚才右击的文件夹.$\n$\n$\n由于注册表与此程序已关联(右击文件夹的快捷方式),所以此程序不能更改名称,如果移动此程序,则移动后需要在新位置打开一次新程序.以便程序重新与注册表关联.$\n$\n$\n$\n$\n$\n选[是]下次显示此消息;选[否]不再显示." IDYES +2 WriteRegStr HKCU $R9 "run" 1 ${WordReplace} '$CMDLINE' '"$EXEDIR\个性化文件夹.EXE" ' '' '+' $6 StrCmp "$6" "" +2 +1 StrCpy "$5" "$6" WriteINIStr $INI "Field 1" "State" $1 ;图标 WriteINIStr $INI "Field 2" "State" $2 ;背景 WriteINIStr $INI "Field 3" "State" $3 ;提示 WriteINIStr $INI "Field 4" "State" $4 ;文字颜色 WriteINIStr $INI "Field 5" "State" $5 ;更改的文件夹 FunctionEnd Function ShowCustom !insertmacro MUI_HEADER_TEXT "个性化文件夹" "你可以使用此程序更改文件夹和驱动器的图标,背景提示文字等." InstallOptions::initDialog /NOUNLOAD "$INI" InstallOptions::show FunctionEnd Function LeaveCustom Pop $hwnd ReadINIStr $0 $INI "Settings" "State" StrCmp $0 13 a +1 StrCmp $0 15 link +1 ReadINIStr $R1 $INI "Field 1" "State" ;图标 ReadINIStr $R2 $INI "Field 2" "State" ;图片 ReadINIStr $R3 $INI "Field 3" "State" ;提示信息 ReadINIStr $R4 $INI "Field 4" "State" ;文字颜色 ReadINIStr $R5 $INI "Field 5" "State" ;文件夹 goto pass a: ReadINIStr $8 $INI "Field 13" "State" ${WordFind} $8 " " "+1{*" $4 WriteINIStr $INI "Field 4" "State" $4 GetDlgItem $9 $HWND 1205 SendMessage $9 0x000C 1 "STR:$4" ;设置文字 abort pass: System::Call 'kernel32::GetModuleFileNameA(i 0, t .R0, i 1024) i r1' MessageBox MB_ICONQUESTION|MB_YESNOCANCEL '是否应用文件夹个性化设置?$\n选[是]应用设置,$\n选[否]清除目标文件夹中的个性化设置,$\n按[取消]退出.' IDNO clear IDCANCEL END CreateDirectory "$R5" CopyFiles /SILENT /FILESONLY "$R1" "$R5\ " SetFileAttributes "$R5\ " ARCHIVE|HIDDEN|SYSTEM|TEMPORARY CopyFiles /SILENT /FILESONLY "$R2" "$R5\ " SetFileAttributes "$R5\ " ARCHIVE|HIDDEN|SYSTEM|TEMPORARY SetFileAttributes "$R5\Desktop.ini" 0 StrCmp $R5 "C:\" driver +1 StrCmp $R5 "D:\" driver +1 StrCmp $R5 "E:\" driver +1 StrCmp $R5 "F:\" driver +1 StrCmp $R5 "G:\" driver +1 StrCmp $R5 "H:\" driver +1 StrCmp $R5 "I:\" driver +1 StrCmp $R5 "J:\" driver +1 StrCmp $R5 "K:\" driver +1 StrCmp $R5 "L:\" driver +1 StrCmp $R5 "M:\" driver +1 StrCmp $R5 "N:\" driver +1 StrCmp $R5 "O:\" driver +1 StrCmp $R5 "P:\" driver +1 StrCmp $R5 "Q:\" driver +1 StrCmp $R5 "R:\" driver +1 StrCmp $R5 "S:\" driver +1 StrCmp $R5 "T:\" driver +1 StrCmp $R5 "U:\" driver +1 StrCmp $R5 "V:\" driver +1 StrCmp $R5 "W:\" driver +1 StrCmp $R5 "X:\" driver +1 StrCmp $R5 "T:\" driver +1 StrCmp $R5 "Z:\" driver +1 GOTO SET driver: SetFileAttributes "$R5\Autorun.inf" 0 WriteINIStr "$R5\Autorun.inf" "AUTORUN" "Icon" " " SetFileAttributes "$R5\Autorun.inf" ARCHIVE|HIDDEN|SYSTEM|TEMPORARY MessageBox MB_ICONINFORMATION|MB_OK '你个性化的文件夹"$R5"是硬盘根目录,必需重启计算机才能生效.' SET: WriteINIStr "$R5\Desktop.ini" ".ShellClassInfo" "IconFile" " " WriteINIStr "$R5\Desktop.ini" "{BE098140-A513-11D0-A3A4-00C04FD706EC}" "IconArea_Image" " " WriteINIStr "$R5\Desktop.ini" ".ShellClassInfo" "IconIndex" "0" WriteINIStr "$R5\Desktop.ini" ".ShellClassInfo" "InfoTip" "$R3" WriteINIStr "$R5\Desktop.ini" "{BE098140-A513-11D0-A3A4-00C04FD706EC}" "IconArea_Text" "0x$R4" SetFileAttributes "$R5\Desktop.ini" ARCHIVE|HIDDEN|SYSTEM|TEMPORARY SetFileAttributes "$R5" ARCHIVE|READONLY FINISH: System::Call 'Shell32::SHChangeNotify(i 0x8000000, i 0, i 0, i 0)' WriteRegStr HKCU $R9 "BG" $R1 WriteRegStr HKCU $R9 "ICON" $R2 WriteRegStr HKCU $R9 "FOLDER" $R3 WriteRegStr HKCU $R9 "COLOR" $R4 WriteRegStr HKCU $R9 "TIP" $R5 WriteRegStr HKCU $R9 "ME" $R6 MessageBox MB_YESNO|MB_ICONINFORMATION '文件夹"$R5"已成功更改,是否打开以查看效果?' IDYES +1 IDNO +3 System::Call 'Shell32::SHChangeNotify(i 0x8000000, i 0, i 0, i 0)' Exec '$WinDIR\Explorer.exe "$R5"' END: Abort clear: Delete "$R5\ " Delete "$R5\ " Delete "$R5\Desktop.ini" SetFileAttributes "$R5" 0 GOTO FINISH Abort link: ReadINIStr $R7 $INI "Field 15" "State" StrCmp $R7 1 +1 +4 WriteRegStr HKCR "Directory\shell\Zindiv" "" "个性化文件夹" WriteRegStr HKCR "Directory\shell\Zindiv\command" "" '"$EXEDIR\个性化文件夹.EXE" %l' Abort DeleteRegKey HKCR "Directory\shell\Zindiv" Abort FunctionEnd Section SectionEnd
引用 个性化文件夹.ini 的内容:
[Settings] NumFields=15 [Field 1] Type=FileRequest Filter=可支持的图标格式(*.ico;*.icl;*.cur;*.ani)|*.ico;*.icl;*.cur;*.ani|图标文件(*.ico)|*.ico|图标库(*.icl)|*.icl|指针(*.cur)|*.cur|动态指针(*.ani)|*.ani|所有文件(*.*)|*.* Text=请选择文件夹的图标: Left=30 Right=-8 Top=12 Bottom=24 Flags=FILE_MUST_EXIST|FILE_HIDEREADONLY [Field 2] Type=FileRequest Filter=可支持的图片格式(*.JPG;*.GIF;*.BMP;*.PNG;*.JPEG;*.JPE;*.RLE;*.UPI)|*.JPG;*.GIF;*.BMP;*.PNG|JPEG文件交换格式(*.JPG;*.JPEG;*.JPE)|*.JPG;*.JPEG;*.JPE|Windows位图(*.BMP;*.RLE;*.UPI)|*.BMP;*.RLE;*.UPI|便携网络图形(*.PNG)|*.PNG|GIF动画(*.GIF)|*.GIF|所有文件(*.*)|*.* Text=请选择文件夹背景图片的路径: Left=30 Right=-8 Top=28 Bottom=40 Flags=FILE_MUST_EXIST|FILE_EXPLORER [Field 3] Type=text Left=0 Right=-10 Top=57 Bottom=68 [Field 4] Type=text MaxLen=6 Left=40 Right=77 Top=76 Bottom=88 [Field 5] Type=DirRequest Text=请选择要更改的文件夹: Left=0 Right=-10 Top=126 Bottom=137 [Field 6] Type=Label Text=请选择将用于文件夹的图标与背景即提示信息: Left=14 Right=-10 Top=0 Bottom=11 [Field 7] Type=Label Text=图标: Left=0 Right=30 Top=14 Bottom=25 [Field 8] Type=Label Text=背景: Left=0 Right=25 Top=30 Bottom=41 [Field 9] Type=Label Text=提示信息(当鼠标在文件夹上停留片刻即会显示此文字): Left=0 Right=-10 Top=44 Bottom=54 [Field 10] Type=Label Text=文字颜色: Left=0 Right=40 Top=78 Bottom=89 [Field 11] Type=Label Text=说明:文字颜色只可填进16进制的RGB颜色代码,即由0-9与A-F组成,格式为BBGGRR,R为红色亮度,B为蓝色亮度,G为绿色亮度. Left=126 Right=-83 Top=75 Bottom=115 [Field 12] Type=Label Text=颜色代码参考: Left=0 Right=53 Top=95 Bottom=106 [Field 13] Type=droplist State=000000 黑色 ListItems=000000 黑色|FFFFFF 白色|0000FF 红色|FF0000 蓝色|00FF00 绿色|00FFFF 黄色|FF00FF 玫瑰红|FFFF00 青绿|808080 灰色|000080 棕色|008000 深绿|800000 靛蓝 Left=54 Right=124 Top=92 Bottom=104 Flags=NOTIFY [Field 14] Type=Label Text=要应用更改的文件夹: Left=0 Right=86 Top=113 Bottom=124 [Field 15] Type=Checkbox Text=添加快捷方式到右键菜单 Flags=NOTIFY Left=226 Right=290 Top=84 Bottom=102
点击另存资源文件。