home *** CD-ROM | disk | FTP | other *** search
/ Hackers Magazine 57 / CdHackersMagazineNr57.iso / Software / Programming / nsis-2.46-setup.exe / Examples / FileFunc.nsi < prev    next >
Text File  |  2008-12-20  |  19KB  |  733 lines

  1. ;_____________________________________________________________________________
  2. ;
  3. ;                          File Functions
  4. ;_____________________________________________________________________________
  5. ;
  6. ; 2006 Shengalts Aleksander aka Instructor (Shengalts@mail.ru)
  7.  
  8. Name "File Functions"
  9. OutFile "FileFunc.exe"
  10. Caption "$(^Name)"
  11. XPStyle on
  12. RequestExecutionLevel user
  13.  
  14. !include "WinMessages.nsh"
  15. !include "FileFunc.nsh"
  16.  
  17. Var INI
  18. Var HWND
  19. Var STATE
  20. Var FUNCTION
  21. Var LOCATE1
  22. Var LOCATE2
  23. Var GETSIZE1
  24. Var GETSIZE2
  25. Var GETSIZE3
  26. Var GETSIZE4
  27. Var GETSIZE5
  28. Var GETSIZE6
  29. Var DRIVESPACE1
  30. Var DRIVESPACE2
  31. Var GETDRIVES1
  32. Var GETTIME1
  33. Var GETTIME2
  34. Var GETFILEATTRIBUTES1
  35. Var GETFILEATTRIBUTES2
  36. Var GETFILEVERSION1
  37. Var GETOPTIONS1
  38. Var GETOPTIONS2
  39. Var GETROOT1
  40. Var GETPARENT1
  41. Var GETFILENAME1
  42. Var GETBASENAME1
  43. Var GETFILEEXT1
  44. Var BANNERTRIMPATH1
  45. Var BANNERTRIMPATH2
  46. Var DIRSTATE1
  47.  
  48. Page Custom ShowCustom LeaveCustom
  49.  
  50. Function ShowCustom
  51.     InstallOptions::initDialog "$INI"
  52.     Pop $hwnd
  53.     GetDlgItem $1 $HWND 1201
  54.     ShowWindow $1 0
  55.     GetDlgItem $1 $HWND 1202
  56.     ShowWindow $1 0
  57.     GetDlgItem $1 $HWND 1206
  58.     EnableWindow $1 0
  59.     SendMessage $1 ${WM_ENABLE} 1 0
  60.     StrCpy $LOCATE1 $DOCUMENTS
  61.     StrCpy $LOCATE2 '/L=FD /M=*.* /S=0B /G=1 /B=0'
  62.     StrCpy $GETSIZE1 '$WINDIR'
  63.     StrCpy $GETSIZE2 '/M=Explorer.exe /S=0K /G=0'
  64.     StrCpy $GETSIZE3 '$PROGRAMFILES\Common Files'
  65.     StrCpy $GETSIZE4 '/S=0M'
  66.     StrCpy $GETSIZE5 '$WINDIR'
  67.     StrCpy $GETSIZE6 '/G=0'
  68.     StrCpy $DRIVESPACE1 'C:\'
  69.     StrCpy $DRIVESPACE2 '/D=F /S=M'
  70.     StrCpy $GETDRIVES1 'FDD+CDROM'
  71.     StrCpy $GETTIME1 '$WINDIR\Explorer.exe'
  72.     StrCpy $GETTIME2 'C'
  73.     StrCpy $GETFILEATTRIBUTES1 'C:\IO.SYS'
  74.     StrCpy $GETFILEATTRIBUTES2 'ALL'
  75.     StrCpy $GETFILEVERSION1 '$WINDIR\Explorer.exe'
  76.     StrCpy $GETOPTIONS1 '/SILENT=yes /INSTDIR="$PROGRAMFILES\Common Files"'
  77.     StrCpy $GETOPTIONS2 '/INSTDIR='
  78.     StrCpy $GETROOT1 'C:\path\file.dll'
  79.     StrCpy $GETPARENT1 'C:\path\file.dll'
  80.     StrCpy $GETFILENAME1 'C:\path\file.dll'
  81.     StrCpy $GETBASENAME1 'C:\path\file.dll'
  82.     StrCpy $GETFILEEXT1 'C:\path\file.dll'
  83.     StrCpy $BANNERTRIMPATH1 'C:\Server\Documents\Terminal\license.htm'
  84.     StrCpy $BANNERTRIMPATH2 '34A'
  85.     StrCpy $DIRSTATE1 '$TEMP'
  86.  
  87.     GetDlgItem $1 $HWND 1203
  88.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$LOCATE1"
  89.     GetDlgItem $1 $HWND 1205
  90.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$LOCATE2"
  91.     InstallOptions::show
  92.     Pop $0
  93. FunctionEnd
  94.  
  95. Function LeaveCustom
  96.     ReadINIStr $STATE $INI "Field 1" "State"
  97.     ReadINIStr $R1 $INI "Field 2" "State"
  98.     ReadINIStr $R2 $INI "Field 3" "State"
  99.     ReadINIStr $R3 $INI "Field 4" "State"
  100.     ReadINIStr $R4 $INI "Field 5" "State"
  101.     ReadINIStr $0 $INI "Settings" "State"
  102.     StrCmp $0 6 view
  103.     StrCmp $0 0 Enter
  104.     goto main
  105.  
  106.     view:
  107.     StrCpy $0 '$$'
  108.     StrCpy $1 'n'
  109.     StrCpy $2 'r'
  110.     StrCmp $R4 "LocateCallback" 0 +3
  111.     StrCpy $R0 `Function LocateCallback$\r$\n    MessageBox MB_OKCANCEL '$0$$R9    "path\name"=[$$R9]$0\$1$0$$R8    "path"          =[$$R8]$0\$1$0$$R7    "name"        =[$$R7]$0\$1$0$$R6    "size"           =[$$R6]' IDOK +2$\r$\n    StrCpy $$R0 StopLocate$\r$\n$\r$\n    Push $$R0$\r$\nFunctionEnd`
  112.     goto send
  113.     StrCmp $R4 "GetDrivesCallback" 0 error
  114.     StrCpy $R0 `Function GetDrivesCallback$\r$\n    MessageBox MB_OKCANCEL '$0$$9    "drive letter"=[$$9]$0\$1$0$$8    "drive type" =[$$8]' IDOK +2$\r$\n    StrCpy $$R0 StopGetDrives$\r$\n    StrCpy $$R5 '$$R5$$9  [$$8 Drive]$$\$2$$\$1'$\r$\n$\r$\n    Push $$R0$\r$\nFunctionEnd`
  115.     goto send
  116.  
  117.     main:
  118.     StrCmp $FUNCTION '' DefaultSend
  119.     StrCmp $FUNCTION Locate 0 +4
  120.     StrCpy $LOCATE1 $R2
  121.     StrCpy $LOCATE2 $R3
  122.     goto DefaultSend
  123.     StrCmp $FUNCTION GetSize1 0 +4
  124.     StrCpy $GETSIZE1 $R2
  125.     StrCpy $GETSIZE2 $R3
  126.     goto DefaultSend
  127.     StrCmp $FUNCTION GetSize2 0 +4
  128.     StrCpy $GETSIZE3 $R2
  129.     StrCpy $GETSIZE4 $R3
  130.     goto DefaultSend
  131.     StrCmp $FUNCTION GetSize3 0 +4
  132.     StrCpy $GETSIZE5 $R2
  133.     StrCpy $GETSIZE6 $R3
  134.     goto DefaultSend
  135.     StrCmp $FUNCTION DriveSpace 0 +4
  136.     StrCpy $DRIVESPACE1 $R1
  137.     StrCpy $DRIVESPACE2 $R3
  138.     goto DefaultSend
  139.     StrCmp $FUNCTION GetDrives 0 +3
  140.     StrCpy $GETDRIVES1 $R1
  141.     goto DefaultSend
  142.     StrCmp $FUNCTION GetTime 0 +4
  143.     StrCpy $GETTIME1 $R1
  144.     StrCpy $GETTIME2 $R3
  145.     goto DefaultSend
  146.     StrCmp $FUNCTION GetFileAttributes 0 +4
  147.     StrCpy $GETFILEATTRIBUTES1 $R1
  148.     StrCpy $GETFILEATTRIBUTES2 $R3
  149.     goto DefaultSend
  150.     StrCmp $FUNCTION GetFileVersion 0 +3
  151.     StrCpy $GETFILEVERSION1 $R1
  152.     goto DefaultSend
  153.     StrCmp $FUNCTION GetOptions 0 +4
  154.     StrCpy $GETOPTIONS1 $R1
  155.     StrCpy $GETOPTIONS2 $R3
  156.     goto DefaultSend
  157.     StrCmp $FUNCTION GetRoot 0 +3
  158.     StrCpy $GETROOT1 $R1
  159.     goto DefaultSend
  160.     StrCmp $FUNCTION GetParent 0 +3
  161.     StrCpy $GETPARENT1 $R1
  162.     goto DefaultSend
  163.     StrCmp $FUNCTION GetFileName 0 +3
  164.     StrCpy $GETFILENAME1 $R1
  165.     goto DefaultSend
  166.     StrCmp $FUNCTION GetBaseName 0 +3
  167.     StrCpy $GETBASENAME1 $R1
  168.     goto DefaultSend
  169.     StrCmp $FUNCTION GetFileExt 0 +3
  170.     StrCpy $GETFILEEXT1 $R1
  171.     goto DefaultSend
  172.     StrCmp $FUNCTION BannerTrimPath 0 +4
  173.     StrCpy $BANNERTRIMPATH1 $R1
  174.     StrCpy $BANNERTRIMPATH2 $R3
  175.     goto DefaultSend
  176.     StrCmp $FUNCTION DirState 0 +2
  177.     StrCpy $DIRSTATE1 $R2
  178.  
  179.     DefaultSend:
  180.     GetDlgItem $1 $HWND 1201
  181.     EnableWindow $1 1
  182.     ShowWindow $1 0
  183.     SendMessage $1 ${WM_SETTEXT} 1 "STR:"
  184.     GetDlgItem $1 $HWND 1202
  185.     EnableWindow $1 1
  186.     ShowWindow $1 0
  187.     GetDlgItem $1 $HWND 1203
  188.     EnableWindow $1 1
  189.     ShowWindow $1 0
  190.     SendMessage $1 ${WM_SETTEXT} 1 "STR:"
  191.     GetDlgItem $1 $HWND 1204
  192.     EnableWindow $1 1
  193.     ShowWindow $1 0
  194.     GetDlgItem $1 $HWND 1205
  195.     EnableWindow $1 1
  196.     GetDlgItem $1 $HWND 1206
  197.     ShowWindow $1 0
  198.     EnableWindow $1 0
  199.     GetDlgItem $1 $HWND 1207
  200.     ShowWindow $1 0
  201.     GetDlgItem $1 $HWND 1208
  202.     SendMessage $1 ${WM_SETTEXT} 1 "STR:"
  203.     GetDlgItem $1 $HWND 1209
  204.     SendMessage $1 ${WM_SETTEXT} 1 "STR:"
  205.     GetDlgItem $1 $HWND 1210
  206.     SendMessage $1 ${WM_SETTEXT} 1 "STR:"
  207.     GetDlgItem $1 $HWND 1211
  208.     SendMessage $1 ${WM_SETTEXT} 1 "STR:"
  209.  
  210.     ReadINIStr $0 $INI "Field 1" "State"
  211.     StrCmp $0 "  1. Locate" 0 GetSize1Send
  212.     StrCpy $FUNCTION Locate
  213.     GetDlgItem $1 $HWND 1203
  214.     ShowWindow $1 1
  215.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$LOCATE1"
  216.     GetDlgItem $1 $HWND 1204
  217.     ShowWindow $1 1
  218.     GetDlgItem $1 $HWND 1205
  219.     ShowWindow $1 1
  220.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$LOCATE2"
  221.     GetDlgItem $1 $HWND 1206
  222.     ShowWindow $1 1
  223.     SendMessage $1 ${WM_SETTEXT} 1 "STR:LocateCallback"
  224.     GetDlgItem $1 $HWND 1207
  225.     ShowWindow $1 1
  226.     GetDlgItem $1 $HWND 1209
  227.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Path"
  228.     GetDlgItem $1 $HWND 1210
  229.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Options"
  230.     GetDlgItem $1 $HWND 1211
  231.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Function"
  232.     abort
  233.  
  234.     GetSize1Send:
  235.     StrCmp $0 "  2. GetSize                 (file)" 0 GetSize2Send
  236.     StrCpy $FUNCTION 'GetSize1'
  237.     GetDlgItem $1 $HWND 1203
  238.     ShowWindow $1 1
  239.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$GETSIZE1"
  240.     GetDlgItem $1 $HWND 1204
  241.     ShowWindow $1 1
  242.     GetDlgItem $1 $HWND 1205
  243.     ShowWindow $1 1
  244.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$GETSIZE2"
  245.     GetDlgItem $1 $HWND 1209
  246.     SendMessage $1 ${WM_SETTEXT} 1 "STR:File"
  247.     GetDlgItem $1 $HWND 1210
  248.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Options"
  249.     Abort
  250.  
  251.     GetSize2Send:
  252.     StrCmp $0 "                                   (directory)" 0 GetSize3Send
  253.     StrCpy $FUNCTION 'GetSize2'
  254.     GetDlgItem $1 $HWND 1203
  255.     ShowWindow $1 1
  256.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$GETSIZE3"
  257.     GetDlgItem $1 $HWND 1204
  258.     ShowWindow $1 1
  259.     GetDlgItem $1 $HWND 1205
  260.     ShowWindow $1 1
  261.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$GETSIZE4"
  262.     GetDlgItem $1 $HWND 1209
  263.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Directory"
  264.     GetDlgItem $1 $HWND 1210
  265.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Options"
  266.     Abort
  267.  
  268.     GetSize3Send:
  269.     StrCmp $0 "                                   (no size, no subdir)" 0 DriveSpaceSend
  270.     StrCpy $FUNCTION 'GetSize3'
  271.     GetDlgItem $1 $HWND 1203
  272.     ShowWindow $1 1
  273.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$GETSIZE5"
  274.     GetDlgItem $1 $HWND 1204
  275.     ShowWindow $1 1
  276.     GetDlgItem $1 $HWND 1205
  277.     ShowWindow $1 1
  278.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$GETSIZE6"
  279.     GetDlgItem $1 $HWND 1209
  280.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Directory"
  281.     GetDlgItem $1 $HWND 1210
  282.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Options"
  283.     Abort
  284.  
  285.     DriveSpaceSend:
  286.     StrCmp $0 "  3. DriveSpace" 0 GetDrivesSend
  287.     StrCpy $FUNCTION DriveSpace
  288.     GetDlgItem $1 $HWND 1201
  289.     ShowWindow $1 1
  290.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$DRIVESPACE1"
  291.     GetDlgItem $1 $HWND 1202
  292.     ShowWindow $1 1
  293.     EnableWindow $1 0
  294.     GetDlgItem $1 $HWND 1205
  295.     ShowWindow $1 1
  296.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$DRIVESPACE2"
  297.     GetDlgItem $1 $HWND 1206
  298.     ShowWindow $1 0
  299.     SendMessage $1 ${WM_SETTEXT} 1 "STR:"
  300.     GetDlgItem $1 $HWND 1207
  301.     ShowWindow $1 0
  302.     GetDlgItem $1 $HWND 1209
  303.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Drive"
  304.     GetDlgItem $1 $HWND 1210
  305.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Options"
  306.     abort
  307.  
  308.     GetDrivesSend:
  309.     StrCmp $0 "  4. GetDrives             (by type)" 0 GetDrives2Send
  310.     StrCpy $FUNCTION GetDrives
  311.     GetDlgItem $1 $HWND 1201
  312.     ShowWindow $1 1
  313.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$GETDRIVES1"
  314.     GetDlgItem $1 $HWND 1202
  315.     ShowWindow $1 1
  316.     EnableWindow $1 0
  317.     GetDlgItem $1 $HWND 1205
  318.     ShowWindow $1 0
  319.     GetDlgItem $1 $HWND 1206
  320.     ShowWindow $1 1
  321.     SendMessage $1 ${WM_SETTEXT} 1 "STR:GetDrivesCallback"
  322.     GetDlgItem $1 $HWND 1207
  323.     ShowWindow $1 1
  324.     GetDlgItem $1 $HWND 1209
  325.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Option"
  326.     GetDlgItem $1 $HWND 1211
  327.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Function"
  328.     abort
  329.  
  330.     GetDrives2Send:
  331.     StrCmp $0 "                                   (all by letter)" 0 GetTime1Send
  332.     StrCpy $FUNCTION ''
  333.     GetDlgItem $1 $HWND 1201
  334.     ShowWindow $1 1
  335.     EnableWindow $1 0
  336.     SendMessage $1 ${WM_ENABLE} 1 0
  337.     SendMessage $1 ${WM_SETTEXT} 1 "STR:ALL"
  338.     GetDlgItem $1 $HWND 1202
  339.     ShowWindow $1 1
  340.     EnableWindow $1 0
  341.     GetDlgItem $1 $HWND 1205
  342.     ShowWindow $1 0
  343.     GetDlgItem $1 $HWND 1206
  344.     ShowWindow $1 1
  345.     SendMessage $1 ${WM_SETTEXT} 1 "STR:GetDrivesCallback"
  346.     GetDlgItem $1 $HWND 1207
  347.     ShowWindow $1 1
  348.     GetDlgItem $1 $HWND 1209
  349.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Option"
  350.     GetDlgItem $1 $HWND 1211
  351.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Function"
  352.     abort
  353.  
  354.     GetTime1Send:
  355.     StrCmp $0 "  5. GetTime                (local time)" 0 GetTime2Send
  356.     StrCpy $FUNCTION ''
  357.     GetDlgItem $1 $HWND 1201
  358.     ShowWindow $1 1
  359.     EnableWindow $1 0
  360.     SendMessage $1 ${WM_ENABLE} 1 0
  361.     GetDlgItem $1 $HWND 1202
  362.     ShowWindow $1 1
  363.     EnableWindow $1 0
  364.     GetDlgItem $1 $HWND 1205
  365.     ShowWindow $1 1
  366.     EnableWindow $1 1
  367.     SendMessage $1 ${WM_SETTEXT} 1 "STR:L"
  368.     GetDlgItem $1 $HWND 1210
  369.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Option"
  370.     Abort
  371.  
  372.     GetTime2Send:
  373.     StrCmp $0 "                                   (file time)" 0 GetFileAttributesSend
  374.     StrCpy $FUNCTION GetTime
  375.     GetDlgItem $1 $HWND 1201
  376.     ShowWindow $1 1
  377.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$GETTIME1"
  378.     GetDlgItem $1 $HWND 1202
  379.     ShowWindow $1 1
  380.     GetDlgItem $1 $HWND 1205
  381.     ShowWindow $1 1
  382.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$GETTIME2"
  383.     GetDlgItem $1 $HWND 1209
  384.     SendMessage $1 ${WM_SETTEXT} 1 "STR:File"
  385.     GetDlgItem $1 $HWND 1210
  386.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Option"
  387.     Abort
  388.  
  389.     GetFileAttributesSend:
  390.     StrCmp $0 "  6. GetFileAttributes" 0 GetFileVersionSend
  391.     StrCpy $FUNCTION GetFileAttributes
  392.     GetDlgItem $1 $HWND 1201
  393.     ShowWindow $1 1
  394.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$GETFILEATTRIBUTES1"
  395.     GetDlgItem $1 $HWND 1202
  396.     ShowWindow $1 1
  397.     GetDlgItem $1 $HWND 1205
  398.     ShowWindow $1 1
  399.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$GETFILEATTRIBUTES2"
  400.     GetDlgItem $1 $HWND 1209
  401.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Path"
  402.     GetDlgItem $1 $HWND 1210
  403.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Attrib"
  404.     Abort
  405.  
  406.     GetFileVersionSend:
  407.     StrCmp $0 "  7. GetFileVersion" 0 GetCmdSend
  408.     StrCpy $FUNCTION GetFileVersion
  409.     GetDlgItem $1 $HWND 1201
  410.     ShowWindow $1 1
  411.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$GETFILEVERSION1"
  412.     GetDlgItem $1 $HWND 1202
  413.     ShowWindow $1 1
  414.     GetDlgItem $1 $HWND 1205
  415.     ShowWindow $1 0
  416.     GetDlgItem $1 $HWND 1209
  417.     SendMessage $1 ${WM_SETTEXT} 1 "STR:File"
  418.     Abort
  419.  
  420.     GetCmdSend:
  421.     StrCmp $0 "  8. GetExeName" +3
  422.     StrCmp $0 "  9. GetExePath" +2
  423.     StrCmp $0 "10. GetParameters" 0 GetOptionsSend
  424.     StrCpy $FUNCTION ''
  425.     GetDlgItem $1 $HWND 1205
  426.     ShowWindow $1 0
  427.     Abort
  428.  
  429.     GetOptionsSend:
  430.     StrCmp $0 "11. GetOptions" 0 GetRootSend
  431.     StrCpy $FUNCTION GetOptions
  432.     GetDlgItem $1 $HWND 1201
  433.     ShowWindow $1 1
  434.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$GETOPTIONS1"
  435.     GetDlgItem $1 $HWND 1202
  436.     ShowWindow $1 1
  437.     EnableWindow $1 0
  438.     GetDlgItem $1 $HWND 1205
  439.     ShowWindow $1 1
  440.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$GETOPTIONS2"
  441.     GetDlgItem $1 $HWND 1209
  442.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Parameters"
  443.     GetDlgItem $1 $HWND 1210
  444.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Option"
  445.     Abort
  446.  
  447.     GetRootSend:
  448.     StrCmp $0 "12. GetRoot" 0 GetParentSend
  449.     StrCpy $FUNCTION GetRoot
  450.     GetDlgItem $1 $HWND 1201
  451.     ShowWindow $1 1
  452.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$GETROOT1"
  453.     GetDlgItem $1 $HWND 1202
  454.     ShowWindow $1 1
  455.     GetDlgItem $1 $HWND 1205
  456.     ShowWindow $1 0
  457.     GetDlgItem $1 $HWND 1209
  458.     SendMessage $1 ${WM_SETTEXT} 1 "STR:FullPath"
  459.     Abort
  460.  
  461.     GetParentSend:
  462.     StrCmp $0 "13. GetParent" 0 GetFileNameSend
  463.     StrCpy $FUNCTION GetParent
  464.     GetDlgItem $1 $HWND 1201
  465.     ShowWindow $1 1
  466.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$GETPARENT1"
  467.     GetDlgItem $1 $HWND 1202
  468.     ShowWindow $1 1
  469.     GetDlgItem $1 $HWND 1205
  470.     ShowWindow $1 0
  471.     GetDlgItem $1 $HWND 1209
  472.     SendMessage $1 ${WM_SETTEXT} 1 "STR:PathString"
  473.     Abort
  474.  
  475.     GetFileNameSend:
  476.     StrCmp $0 "14. GetFileName" 0 GetBaseNameSend
  477.     StrCpy $FUNCTION GetFileName
  478.     GetDlgItem $1 $HWND 1201
  479.     ShowWindow $1 1
  480.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$GETFILENAME1"
  481.     GetDlgItem $1 $HWND 1202
  482.     ShowWindow $1 1
  483.     GetDlgItem $1 $HWND 1205
  484.     ShowWindow $1 0
  485.     GetDlgItem $1 $HWND 1209
  486.     SendMessage $1 ${WM_SETTEXT} 1 "STR:PathString"
  487.     Abort
  488.  
  489.     GetBaseNameSend:
  490.     StrCmp $0 "15. GetBaseName" 0 GetFileExtSend
  491.     StrCpy $FUNCTION GetBaseName
  492.     GetDlgItem $1 $HWND 1201
  493.     ShowWindow $1 1
  494.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$GETBASENAME1"
  495.     GetDlgItem $1 $HWND 1202
  496.     ShowWindow $1 1
  497.     GetDlgItem $1 $HWND 1205
  498.     ShowWindow $1 0
  499.     GetDlgItem $1 $HWND 1209
  500.     SendMessage $1 ${WM_SETTEXT} 1 "STR:FileString"
  501.     Abort
  502.  
  503.     GetFileExtSend:
  504.     StrCmp $0 "16. GetFileExt" 0 BannerTrimPathSend
  505.     StrCpy $FUNCTION GetFileExt
  506.     GetDlgItem $1 $HWND 1201
  507.     ShowWindow $1 1
  508.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$GETFILEEXT1"
  509.     GetDlgItem $1 $HWND 1202
  510.     ShowWindow $1 1
  511.     GetDlgItem $1 $HWND 1205
  512.     ShowWindow $1 0
  513.     GetDlgItem $1 $HWND 1209
  514.     SendMessage $1 ${WM_SETTEXT} 1 "STR:FileString"
  515.     Abort
  516.  
  517.     BannerTrimPathSend:
  518.     StrCmp $0 "17. BannerTrimPath" 0 DirStateSend
  519.     StrCpy $FUNCTION BannerTrimPath
  520.     GetDlgItem $1 $HWND 1201
  521.     ShowWindow $1 1
  522.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$BANNERTRIMPATH1"
  523.     GetDlgItem $1 $HWND 1202
  524.     ShowWindow $1 1
  525.     EnableWindow $1 0
  526.     GetDlgItem $1 $HWND 1205
  527.     ShowWindow $1 1
  528.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$BANNERTRIMPATH2"
  529.     GetDlgItem $1 $HWND 1209
  530.     SendMessage $1 ${WM_SETTEXT} 1 "STR:PathString"
  531.     GetDlgItem $1 $HWND 1210
  532.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Option"
  533.     Abort
  534.  
  535.     DirStateSend:
  536.     StrCmp $0 "18. DirState" 0 RefreshShellIconsSend
  537.     StrCpy $FUNCTION DirState
  538.     GetDlgItem $1 $HWND 1203
  539.     ShowWindow $1 1
  540.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$DIRSTATE1"
  541.     GetDlgItem $1 $HWND 1204
  542.     ShowWindow $1 1
  543.     GetDlgItem $1 $HWND 1205
  544.     ShowWindow $1 0
  545.     GetDlgItem $1 $HWND 1209
  546.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Directory"
  547.     Abort
  548.  
  549.     RefreshShellIconsSend:
  550.     StrCmp $0 "19. RefreshShellIcons" 0 Abort
  551.     StrCpy $FUNCTION ''
  552.     GetDlgItem $1 $HWND 1205
  553.     ShowWindow $1 0
  554.  
  555.     Abort:
  556.     Abort
  557.  
  558. ;=Enter=
  559.     Enter:
  560.     StrCpy $R0 ''
  561.     StrCpy $R5 ''
  562.  
  563.     StrCmp $STATE "  1. Locate" Locate
  564.     StrCmp $STATE "  2. GetSize                 (file)" GetSize
  565.     StrCmp $STATE "                                   (directory)" GetSize
  566.     StrCmp $STATE "                                   (no size, no subdir)" GetSize
  567.     StrCmp $STATE "  3. DriveSpace" DriveSpace
  568.     StrCmp $STATE "  4. GetDrives             (by type)" GetDrives
  569.     StrCmp $STATE "                                   (all by letter)" GetDrives
  570.     StrCmp $STATE "  5. GetTime                (local time)" GetTime
  571.     StrCmp $STATE "                                   (file time)" GetTime
  572.     StrCmp $STATE "  6. GetFileAttributes" GetFileAttributes
  573.     StrCmp $STATE "  7. GetFileVersion" GetFileVersion
  574.     StrCmp $STATE "  8. GetExeName" GetExeName
  575.     StrCmp $STATE "  9. GetExePath" GetExePath
  576.     StrCmp $STATE "10. GetParameters" GetParameters
  577.     StrCmp $STATE "11. GetOptions" GetOptions
  578.     StrCmp $STATE "12. GetRoot" GetRoot
  579.     StrCmp $STATE "13. GetParent" GetParent
  580.     StrCmp $STATE "14. GetFileName" GetFileName
  581.     StrCmp $STATE "15. GetBaseName" GetBaseName
  582.     StrCmp $STATE "16. GetFileExt" GetFileExt
  583.     StrCmp $STATE "17. BannerTrimPath" BannerTrimPath
  584.     StrCmp $STATE "18. DirState" DirState
  585.     StrCmp $STATE "19. RefreshShellIcons" RefreshShellIcons
  586.     Abort
  587.  
  588.     Locate:
  589.     ${Locate} "$R2" "$R3" "LocateCallback"
  590.     IfErrors error
  591.     StrCmp $R0 StopLocate 0 +3
  592.     StrCpy $R0 'stopped'
  593.     goto send
  594.     StrCpy $R0 'done'
  595.     goto send
  596.  
  597.     GetSize:
  598.     ${GetSize} "$R2" "$R3" $0 $1 $2
  599.     IfErrors error
  600.     StrCpy $R0 "Size=$0$\r$\nFiles=$1$\r$\nFolders=$2"
  601.     goto send
  602.  
  603.     DriveSpace:
  604.     ${DriveSpace} "$R1" "$R3" $0
  605.     IfErrors error
  606.     StrCpy $R0 "$0"
  607.     goto send
  608.  
  609.     GetDrives:
  610.     ${GetDrives} "$R1" "GetDrivesCallback"
  611.     StrCmp $R0 StopGetDrives 0 +3
  612.     StrCpy $R0 '$R5stopped'
  613.     goto send
  614.     StrCpy $R0 '$R5done'
  615.     goto send
  616.  
  617.     GetTime:
  618.     ${GetTime} "$R1" "$R3" $0 $1 $2 $3 $4 $5 $6
  619.     IfErrors error
  620.     StrCpy $R0 'Date=$0/$1/$2 ($3)$\r$\nTime=$4:$5:$6'
  621.     goto send
  622.  
  623.     GetFileAttributes:
  624.     ${GetFileAttributes} "$R1" "$R3" $0
  625.     IfErrors error
  626.     StrCpy $R0 '$0'
  627.     goto send
  628.  
  629.     GetFileVersion:
  630.     ${GetFileVersion} "$R1" $0
  631.     IfErrors error
  632.     StrCpy $R0  '$0'
  633.     goto send
  634.  
  635.     GetExeName:
  636.     ${GetExeName} $0
  637.     StrCpy $R0 '$0'
  638.     goto send
  639.  
  640.     GetExePath:
  641.     ${GetExePath} $0
  642.     StrCpy $R0 '$0'
  643.     goto send
  644.  
  645.     GetParameters:
  646.     ${GetParameters} $0
  647.     StrCpy $R0 '$0'
  648.     StrCmp $R0 '' 0 send
  649.     StrCpy $R0 'no parameters'
  650.     goto send
  651.  
  652.     GetOptions:
  653.     ${GetOptions} "$R1" "$R3" $0
  654.     IfErrors error
  655.     StrCpy $R0  '$0'
  656.     goto send
  657.  
  658.     GetRoot:
  659.     ${GetRoot} "$R1" $0
  660.     StrCpy $R0  '$0'
  661.     goto send
  662.  
  663.     GetParent:
  664.     ${GetParent} "$R1" $0
  665.     StrCpy $R0  '$0'
  666.     goto send
  667.  
  668.     GetFileName:
  669.     ${GetFileName} "$R1" $0
  670.     StrCpy $R0  '$0'
  671.     goto send
  672.  
  673.     GetBaseName:
  674.     ${GetBaseName} "$R1" $0
  675.     StrCpy $R0  '$0'
  676.     goto send
  677.  
  678.     GetFileExt:
  679.     ${GetFileExt} "$R1" $0
  680.     StrCpy $R0  '$0'
  681.     goto send
  682.  
  683.     BannerTrimPath:
  684.     ${BannerTrimPath} "$R1" "$R3" $0
  685.     StrCpy $R0  '$0'
  686.     goto send
  687.  
  688.     DirState:
  689.     ${DirState} "$R2" $0
  690.     StrCpy $R0  '$0'
  691.     goto send
  692.  
  693.     RefreshShellIcons:
  694.     ${RefreshShellIcons}
  695.     StrCpy $R0 'done'
  696.     goto send
  697.  
  698.     error:
  699.     StrCpy $R0 'error'
  700.  
  701.     send:
  702.     GetDlgItem $1 $HWND 1208
  703.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$R0"
  704.  
  705.     abort
  706. FunctionEnd
  707.  
  708. Function LocateCallback
  709.     MessageBox MB_OKCANCEL '$$R9    "path\name"=[$R9]$\n$$R8    "path"          =[$R8]$\n$$R7    "name"        =[$R7]$\n$$R6    "size"           =[$R6]' IDOK +2
  710.     StrCpy $R0 StopLocate
  711.  
  712.     Push $R0
  713. FunctionEnd
  714.  
  715. Function GetDrivesCallback
  716.     MessageBox MB_OKCANCEL '$$9    "drive letter"=[$9]$\n$$8    "drive type" =[$8]' IDOK +2
  717.     StrCpy $R0 StopGetDrives
  718.     StrCpy $R5 '$R5$9  [$8 Drive]$\r$\n'
  719.  
  720.     Push $R0
  721. FunctionEnd
  722.  
  723. Function .onInit
  724.     InitPluginsDir
  725.     GetTempFileName $INI $PLUGINSDIR
  726.     File /oname=$INI "FileFunc.ini"
  727. FunctionEnd
  728.  
  729. Page instfiles
  730.  
  731. Section "Empty"
  732. SectionEnd
  733.