File "Folder Icon Autoset.bas"
Path: /Folder Icon Autoset/Folder Icon Autoset.bas
File size: 23.17 KB
MIME-type:
Charset: utf-8
#COMPILE EXE "Folder Icon Autoset.exe"
#DIM ALL
$VER = "1.0"
$Label2 = " folder(s) + subfolder(s) detected."
$Label3 = " icon(s) ready to use for customization."
$Label4 = " icon(s) already assigned to a folder (no action needed)."
$Label5 = " folder(s) in conflict - customized with a different icon."
$pvFile = "fia_preview.txt"
'------------------------------------------------------------------------------
' ** Resources **
'------------------------------------------------------------------------------
#RESOURCE MANIFEST 1, "XPTheme.xml"
#RESOURCE ICON, A, "icon.ico"
#RESOURCE VERSIONINFO
#RESOURCE FILEVERSION 1,0,0,0
#RESOURCE STRINGINFO "0409", "0000"
#RESOURCE VERSION$ "CompanyName", "mougino software"
#RESOURCE VERSION$ "LegalCopyright", "(c) 2019 mougino"
#RESOURCE VERSION$ "ProductName", "Folder Icon Autoset"
#RESOURCE VERSION$ "ProductVersion", "1.0"
#RESOURCE VERSION$ "FileDescription", "http://mougino.free.fr"
'------------------------------------------------------------------------------
'------------------------------------------------------------------------------
' ** Includes **
'------------------------------------------------------------------------------
#INCLUDE ONCE "WIN32API.INC"
'------------------------------------------------------------------------------
'------------------------------------------------------------------------------
' ** Globals **
'------------------------------------------------------------------------------
GLOBAL hDlg AS DWORD
GLOBAL rootPath AS STRING
GLOBAL icoSrc() AS STRING
GLOBAL icoTgt() AS STRING
GLOBAL icoIso() AS STRING
GLOBAL recursLvl AS LONG
GLOBAL nFolder AS LONG
GLOBAL nUsable AS LONG
GLOBAL nConflict AS LONG
GLOBAL nNochange AS LONG
GLOBAL nDoneA AS LONG
GLOBAL nDoneU AS LONG
'------------------------------------------------------------------------------
'------------------------------------------------------------------------------
' ** Constants **
'------------------------------------------------------------------------------
%ID_TIMER = %WM_USER + 400
%IDC_TEXTBOX1 = 1001
%IDC_BUTTON0 = 1002
%IDC_BUTTON2 = 1003
%IDC_BUTTON3 = 1004
%IDC_BUTTON4 = 1005
%IDC_FRAME1 = 1006
%IDC_LABEL2 = 1007
%IDC_LABEL3 = 1008
%IDC_LABEL4 = 1009
%IDC_LABEL5 = 1010
%IDC_LABEL1 = 1011
%IDC_COMBOBOX1 = 1012
'------------------------------------------------------------------------------
'------------------------------------------------------------------------------
' ** Functions **
'------------------------------------------------------------------------------
FUNCTION PBMAIN()
ShowMain %HWND_DESKTOP
END FUNCTION
'------------------------------------------------------------------------------
'------------------------------------------------------------------------------
FUNCTION GetAssignedIcon(folder AS STRING) AS STRING
LOCAL a AS ASCIIZ * %MAX_PATH
LOCAL s AS STRING
GetPrivateProfileString ".ShellClassInfo", "IconResource", "", a, _
%MAX_PATH, RTRIM$(folder, "\") + "\desktop.ini"
s = TRIM$(a)
IF INSTR(s, $DQ) > 0 THEN s = TRIM$(s, $DQ)
IF RIGHT$(s, 2) = ",0" THEN s = LEFT$(s, -2)
FUNCTION = s
END FUNCTION
'------------------------------------------------------------------------------
'------------------------------------------------------------------------------
FUNCTION AssignedIconDetail(folder AS STRING) AS STRING
LOCAL ico AS STRING
LOCAL ff, icoSiz AS LONG
ico = GetAssignedIcon(folder)
REPLACE ".\" WITH RTRIM$(folder, "\") + "\" IN ico
IF ISFILE(ico) THEN
ff = FREEFILE
OPEN ico FOR BINARY ACCESS READ LOCK SHARED AS #ff
icoSiz = LOF(#ff)
CLOSE #ff
FUNCTION = ico + "|" + TRIM$(icoSiz)
END IF
END FUNCTION
'------------------------------------------------------------------------------
'------------------------------------------------------------------------------
FUNCTION GetFirstIcon(folder AS STRING) AS STRING
LOCAL s AS STRING
s = DIR$(RTRIM$(folder, "\") + "\*.ico")
DIR$ CLOSE
FUNCTION = s
END FUNCTION
'------------------------------------------------------------------------------
'------------------------------------------------------------------------------
FUNCTION FirstIconDetail(folder AS STRING) AS STRING
LOCAL ico AS STRING
LOCAL ff, icoSiz AS LONG
ico = RTRIM$(folder, "\") + "\" + GetFirstIcon(folder)
IF ISFILE(ico) THEN
ff = FREEFILE
OPEN ico FOR BINARY ACCESS READ LOCK SHARED AS #ff
icoSiz = LOF(#ff)
CLOSE #ff
FUNCTION = ico + "|" + TRIM$(icoSiz)
END IF
END FUNCTION
'------------------------------------------------------------------------------
'------------------------------------------------------------------------------
SUB AnalyzeThis(folder AS STRING)
LOCAL e, folder() AS STRING
LOCAL ico0, ico1 AS STRING
LOCAL n AS LONG
' Folder beyond recursive level? -> if yes give up
IF TALLY(folder, "\") > recursLvl + 1 THEN EXIT SUB
INCR nFolder ' else increase number of detected folders
' Analyze current folder icons
ico0 = AssignedIconDetail(folder)
ico1 = FirstIconDetail(folder)
IF ico1 <> "" AND ico0 <> ico1 THEN ' new or different icon available
IF ISFALSE ARRAYATTR(icoSrc(), 0) THEN ' array not yet dimensioned
DIM icoSrc(0) : icoSrc(0) = ico0
DIM icoTgt(0) : icoTgt(0) = ico1
ELSE
n = UBOUND(icoSrc) + 1
REDIM PRESERVE icoSrc(n) : icoSrc(n) = ico0
REDIM PRESERVE icoTgt(n) : icoTgt(n) = ico1
END IF
INCR nUsable ' increase number of usable icon
IF ico0 <> "" THEN INCR nConflict
ELSEIF ico1 <> "" AND ico0 = ico1 THEN ' icon already assigned
IF ISFALSE ARRAYATTR(icoIso(), 0) THEN ' array not yet dimensioned
DIM icoIso(0)
icoIso(0) = ico0
ELSE
n = UBOUND(icoIso) + 1
REDIM PRESERVE icoIso(n)
icoIso(n) = ico0
END IF
INCR nNochange
END IF
' List subfolders ...
e = DIR$(folder, ONLY %SUBDIR)
IF e = "" THEN DIR$ CLOSE : EXIT SUB ' no subfolder
DIM folder(0) : folder(0) = RTRIM$(folder, "\") + "\" + e + "\"
DO
e = DIR$(NEXT)
IF e <> "" THEN
n = UBOUND(folder) + 1
REDIM PRESERVE folder(n)
folder(n) = RTRIM$(folder, "\") + "\" + e + "\"
END IF
LOOP UNTIL e = ""
DIR$ CLOSE
' ... and AnalyzeTh[em] recursively
FOR n = 0 TO UBOUND(folder)
AnalyzeThis folder(n)
NEXT
END SUB
'------------------------------------------------------------------------------
'------------------------------------------------------------------------------
THREAD FUNCTION Analyze(BYVAL param AS LONG) AS LONG
KILL EXE.PATH$ + $pvFile
AnalyzeThis rootPath
FUNCTION = 1
END FUNCTION
'------------------------------------------------------------------------------
'------------------------------------------------------------------------------
MACRO NOTHING_TO_DO
MessageBox hDlg, "No icon detected in any folder."+$CR+$CR _
+"No customization possible.",EXE.NAME$,%MB_ICONINFORMATION
EXIT SUB
END MACRO
'------------------------------------------------------------------------------
'------------------------------------------------------------------------------
SUB PreviewChanges()
LOCAL i, j, ff AS LONG
LOCAL ico0, ico1, folder AS STRING
IF nUsable + nNochange = 0 THEN
NOTHING_TO_DO
END IF
ff = FREEFILE
OPEN EXE.PATH$ + $pvFile FOR OUTPUT AS #ff
PRINT #ff, STRING$(80, "#")
PRINT #ff, "## FOLDER ICON AUTOSET"
PRINT #ff, "## Analyzing " + $DQ + rootPath + $DQ
PRINT #ff, "## " + RIGHT$(DATE$,4) + "-" + LEFT$(DATE$,2) + MID$(DATE$,3,3) + " at " + TIME$
PRINT #ff, STRING$(80, "#")
PRINT #ff, ""
IF nConflict <> 0 THEN
PRINT #ff, STRING$(80, "#")
PRINT #ff, "## Folders in conflict (a different icon is already assigned)"
PRINT #ff, STRING$(80, "#")
PRINT #ff, ""
PRINT #ff, STRING$(65, ">")
PRINT #ff, ">> Remove the folders that you do NOT want to customize:"
PRINT #ff, ">> (do not forget to save your changes to this file)"
PRINT #ff, STRING$(65, ">")
PRINT #ff, ""
FOR i = 0 TO UBOUND(icoSrc)
IF icoSrc(i) <> "" THEN
ico0 = REMOVE$(icoSrc(i), rootPath) + " bytes)"
REPLACE "|" WITH $DQ + " (" IN ico0
j = INSTR(-1, ico0, "\")
folder = LEFT$(ico0, j)
IF folder = "" THEN folder = "\"
ico0 = $DQ + MID$(ico0, j+1)
ico1 = REMOVE$(icoTgt(i), rootPath) + " bytes)"
REPLACE "|" WITH $DQ + " (" IN ico1
ico1 = $DQ + MID$(ico1, j+1)
PRINT #ff, "- " + $DQ + folder + $DQ + " :"
PRINT #ff, " Currently customized with " + ico0
PRINT #ff, " Will be replaced with " + ico1
PRINT #ff, ""
END IF
NEXT
END IF
IF nUsable <> nConflict THEN
PRINT #ff, STRING$(80, "#")
PRINT #ff, "## Folders ready to be customized (new icon has been detected)"
PRINT #ff, STRING$(80, "#")
PRINT #ff, ""
PRINT #ff, STRING$(65, ">")
PRINT #ff, ">> Remove the folders that you do NOT want to customize:"
PRINT #ff, ">> (do not forget to save your changes to this file)"
PRINT #ff, STRING$(65, ">")
PRINT #ff, ""
FOR i = 0 TO UBOUND(icoSrc)
IF icoSrc(i) = "" THEN
ico1 = REMOVE$(icoTgt(i), rootPath) + " bytes)"
REPLACE "|" WITH $DQ + " (" IN ico1
j = INSTR(-1, ico1, "\")
folder = LEFT$(ico1, j)
IF folder = "" THEN folder = "\"
ico1 = $DQ + MID$(ico1, j+1)
PRINT #ff, "- " + $DQ + folder + $DQ + " :"
PRINT #ff, " Ready to be customized with " + ico1
PRINT #ff, ""
END IF
NEXT
END IF
IF nNochange <> 0 THEN
PRINT #ff, STRING$(80, "#")
PRINT #ff, "## Folders already customized"
PRINT #ff, STRING$(80, "#")
PRINT #ff, ""
PRINT #ff, STRING$(65, ">")
PRINT #ff, ">> You can move these folders to the next 'UNASSIGN' section:"
PRINT #ff, ">> This will clear their icon customization..."
PRINT #ff, ">> (do not forget to save your changes to this file)"
PRINT #ff, STRING$(65, ">")
PRINT #ff, ""
FOR i = 0 TO UBOUND(icoIso)
ico0 = REMOVE$(icoIso(i), rootPath) + " bytes)"
REPLACE "|" WITH $DQ + " (" IN ico0
j = INSTR(-1, ico0, "\")
folder = LEFT$(ico0, j)
IF folder = "" THEN folder = "\"
ico0 = $DQ + MID$(ico0, j+1)
PRINT #ff, "- " + $DQ + folder + $DQ + " :"
PRINT #ff, " Already customized with " + ico0
PRINT #ff, ""
NEXT
PRINT #ff, STRING$(80, "#")
PRINT #ff, "## UNASSIGN - Clear folder icon customization"
PRINT #ff, STRING$(80, "#")
PRINT #ff, ""
PRINT #ff, STRING$(65, ">")
PRINT #ff, ">> Cut+Paste the folders from the previous section here:"
PRINT #ff, ">> This will clear their icon customization..."
PRINT #ff, ">> (do not forget to save your changes to this file)"
PRINT #ff, STRING$(65, ">")
PRINT #ff, ""
END IF
CLOSE #ff
ShellExecute 0, "open", EXE.PATH$ + $pvFile + $NUL, $NUL, BYVAL 0&, %SW_SHOWNORMAL
END SUB
'------------------------------------------------------------------------------
'------------------------------------------------------------------------------
SUB CreateDesktopIni(folder AS STRING)
WritePrivateProfileString ".ShellClassInfo", "InfoTip", _
"Customized by Folder Icon Autoset (web:mougino.free.fr)", _
RTRIM$(folder, "\") + "\desktop.ini"
SetFileAttributes RTRIM$(folder, "\") + "\desktop.ini", _
%FILE_ATTRIBUTE_SYSTEM + %FILE_ATTRIBUTE_HIDDEN
END SUB
'------------------------------------------------------------------------------
'------------------------------------------------------------------------------
SUB AutosetIcons()
LOCAL i, j, tuned, unassign AS LONG
LOCAL pview, ico, folder AS STRING
nDoneA = 0
IF nUsable + nNochange = 0 THEN
NOTHING_TO_DO
END IF
' Did user activate the preview/tune option?
IF ISFILE(EXE.PATH$ + $pvFile) THEN
i = FREEFILE
OPEN EXE.PATH$ + $pvFile FOR BINARY ACCESS READ LOCK SHARED AS #i
GET$ #i, LOF(#i), pview
CLOSE #i
tuned = 1
END IF
' Handle new icons and replacement icons
FOR i = 0 TO UBOUND(icoTgt)
ico = icoTgt(i)
j = INSTR(ico, "|")
ico = LEFT$(ico, j - 1)
j = INSTR(-1, ico, "\")
folder = LEFT$(ico, j)
IF folder = rootPath THEN folder += "\"
ico = MID$(ico, j + 1)
IF ISTRUE tuned THEN ' folder customization removed by user?
IF 0 = INSTR(pview, $DQ + REMOVE$(folder, rootPath) + $DQ) THEN ITERATE FOR
END IF
IF RIGHT$(folder, 2) = "\\" THEN folder = LEFT$(folder, -1)
IF NOT ISFILE(folder + "desktop.ini") THEN CreateDesktopIni(folder)
WritePrivateProfileString ".ShellClassInfo", "IconResource", _
".\" + ico + ",0" , folder + "desktop.ini"
INCR nDoneA
NEXT
' Handle icon unassignments
IF ISFALSE tuned THEN EXIT SUB ' only in preview/tune mode
unassign = INSTR(pview, "## UNASSIGN - ")
IF unassign = 0 THEN EXIT SUB ' in case user removed the section
FOR i = 0 TO UBOUND(icoIso)
ico = icoIso(i)
j = INSTR(ico, "|")
ico = LEFT$(ico, j-1)
j = INSTR(-1, ico, "\")
folder = LEFT$(ico, j)
IF folder = rootPath THEN folder += "\"
IF INSTR(pview, $DQ + REMOVE$(folder, rootPath) + $DQ) > unassign THEN
IF RIGHT$(folder, 2) = "\\" THEN folder = LEFT$(folder, -1)
SetFileAttributes folder + "desktop.ini", %FILE_ATTRIBUTE_NORMAL
KILL folder + "desktop.ini"
INCR nDoneU
END IF
NEXT
END SUB
'------------------------------------------------------------------------------
'------------------------------------------------------------------------------
SUB ExplorerRefresh()
SHELL "ie4uinit.exe -ClearIconCache"
SHELL "ie4uinit.exe -show"
END SUB
'------------------------------------------------------------------------------
'------------------------------------------------------------------------------
MACRO REFRESH_LABELS
CONTROL SET TEXT CB.HNDL, %IDC_LABEL2, TRIM$(nFolder) + $Label2 ' X detected
CONTROL SET TEXT CB.HNDL, %IDC_LABEL3, TRIM$(nUsable) + $Label3 ' X ready for use
CONTROL SET TEXT CB.HNDL, %IDC_LABEL4, TRIM$(nNochange) + $Label4 ' X already assigned
CONTROL SET TEXT CB.HNDL, %IDC_LABEL5, TRIM$(nConflict) + $Label5 ' X in conflict
END MACRO
'------------------------------------------------------------------------------
'------------------------------------------------------------------------------
MACRO RESET_SCAN_DATA
ERASE icoSrc(), icoTgt(), icoIso()
nFolder = 0
nUsable = 0
nConflict = 0
nNochange = 0
nDoneA = 0
nDoneU = 0
END MACRO
'------------------------------------------------------------------------------
'------------------------------------------------------------------------------
MACRO RESET_UI
CONTROL SET TEXT CB.HNDL, %IDC_TEXTBOX1, $SPC + rootPath
CONTROL SET TEXT CB.HNDL, %IDC_BUTTON2, "SCAN !"
CONTROL DISABLE CB.HNDL, %IDC_BUTTON3 ' PREVIEW / TUNE
CONTROL DISABLE CB.HNDL, %IDC_BUTTON4 ' AUTOSET ICONS
CONTROL ENABLE CB.HNDL, %IDC_BUTTON0 ' [...]
CONTROL ENABLE CB.HNDL, %IDC_COMBOBOX1
RESET_SCAN_DATA
REFRESH_LABELS
END MACRO
'------------------------------------------------------------------------------
'------------------------------------------------------------------------------
' ** CallBacks **
'------------------------------------------------------------------------------
CALLBACK FUNCTION ProcMain()
STATIC hThread AS DWORD
LOCAL lRes, idEvent AS LONG
LOCAL e AS STRING
SELECT CASE AS LONG CB.MSG
CASE %WM_INITDIALOG
' Initialization handler
rootPath = EXE.PATH$
RESET_UI
' CallBack Message is a Timer event
CASE %WM_TIMER
REFRESH_LABELS
THREAD STATUS hThread TO lRes
IF lRes <> 0 AND lRes <> &H103 THEN ' Thread finished
IF idEvent THEN KillTimer CB.HNDL, idEvent
THREAD CLOSE hThread TO lRes
hThread = 0
CONTROL SET TEXT CB.HNDL, %IDC_BUTTON2, "SCAN !"
CONTROL ENABLE CB.HNDL, %IDC_BUTTON3 ' PREVIEW / TUNE
CONTROL ENABLE CB.HNDL, %IDC_BUTTON4 ' AUTOSET ICONS
CONTROL ENABLE CB.HNDL, %IDC_BUTTON0 ' [...]
CONTROL ENABLE CB.HNDL, %IDC_COMBOBOX1
END IF
CASE %WM_COMMAND
' Process control notifications
SELECT CASE AS LONG CB.CTL
CASE %IDC_BUTTON0 ' [...]
IF CB.CTLMSG = %BN_CLICKED OR CB.CTLMSG = 1 THEN
DISPLAY BROWSE CB.HNDL, 40, -10, "Folder Icon Autoset" _
+ $CR + "Pick a folder for analysis :", "", _
%BIF_RETURNONLYFSDIRS + %BIF_NONEWFOLDERBUTTON TO e
IF e <> "" THEN
rootPath = RTRIM$(e, "\") + "\"
RESET_UI
END IF
END IF
CASE %IDC_BUTTON2 ' SCAN ! / STOP SCAN
IF CB.CTLMSG = %BN_CLICKED OR CB.CTLMSG = 1 THEN
CONTROL GET TEXT CB.HNDL, %IDC_BUTTON2 TO e
IF e = "SCAN !" THEN
COMBOBOX GET SELECT CB.HNDL, %IDC_COMBOBOX1 TO recursLvl
IF recursLvl = 1 THEN recursLvl = 999999 ELSE DECR recursLvl
CONTROL DISABLE CB.HNDL, %IDC_BUTTON0 ' [...]
CONTROL DISABLE CB.HNDL, %IDC_COMBOBOX1
CONTROL DISABLE CB.HNDL, %IDC_BUTTON3 ' PREVIEW / TUNE
CONTROL DISABLE CB.HNDL, %IDC_BUTTON4 ' AUTOSET ICONS
CONTROL SET TEXT CB.HNDL, %IDC_BUTTON2, "STOP SCAN"
' Start scanning thread
RESET_SCAN_DATA
THREAD CREATE Analyze(0) TO hThread
' Start timer to refresh labels
idEvent = SetTimer(CB.HNDL, %ID_TIMER, 500, BYVAL 0&)
DIALOG POST CB.HNDL, %WM_TIMER, %ID_TIMER, 0
ELSE ' STOP SCAN
' Kill timer to refresh labels
IF idEvent THEN KillTimer CB.HNDL, idEvent
' Kill scanning thread
IF hThread THEN
THREAD SUSPEND hThread TO lRes
THREAD CLOSE hThread TO lRes
hThread = 0
END IF
RESET_UI
END IF
END IF
CASE %IDC_BUTTON3 ' PREVIEW / TUNE
IF CB.CTLMSG = %BN_CLICKED OR CB.CTLMSG = 1 THEN
PreviewChanges()
END IF
CASE %IDC_BUTTON4 ' AUTOSET ICONS
IF CB.CTLMSG = %BN_CLICKED OR CB.CTLMSG = 1 THEN
AutosetIcons()
ExplorerRefresh()
e = TRIM$(nDoneA)+" folder(s) successfully customized !"
IF nDoneU > 0 THEN
e += $CR+$CR+TRIM$(nDoneU)+" folder(s) correctly unassigned !"
END IF
MessageBox CB.HNDL,(e),EXE.NAME$,%MB_ICONINFORMATION
END IF
END SELECT
END SELECT
END FUNCTION
'------------------------------------------------------------------------------
'------------------------------------------------------------------------------
' ** Dialogs **
'------------------------------------------------------------------------------
FUNCTION ShowMain(BYVAL hParent AS DWORD) AS LONG
LOCAL lRes AS LONG
DIALOG NEW PIXELS, hParent, "Folder Icon Autoset "+$VER, , , 416, 256, %WS_POPUP _
OR %WS_BORDER OR %WS_DLGFRAME OR %WS_SYSMENU OR %WS_CLIPSIBLINGS OR _
%WS_VISIBLE OR %DS_MODALFRAME OR %DS_3DLOOK OR %DS_NOFAILCREATE OR _
%DS_SETFONT OR %WS_CAPTION OR %WS_MINIMIZEBOX, %WS_EX_WINDOWEDGE OR _
%WS_EX_CONTROLPARENT OR %WS_EX_LEFT OR %WS_EX_LTRREADING OR _
%WS_EX_RIGHTSCROLLBAR, TO hDlg
DIALOG SET ICON hDlg, "A"
CONTROL ADD LABEL, hDlg, %IDC_TEXTBOX1, EXE.PATH$, 8, 8, 360, 18, _
%WS_CHILD OR %WS_VISIBLE OR %WS_BORDER OR %SS_LEFT, %WS_EX_LEFT OR _
%WS_EX_LTRREADING
CONTROL SET COLOR hDlg, %IDC_TEXTBOX1, -1, %WHITE
CONTROL ADD BUTTON, hDlg, %IDC_BUTTON0, "...", 368, 7, 32, 20
CONTROL ADD LABEL, hDlg, %IDC_LABEL1, "Stop analysis at this folder " + _
"recursion level : (0 = infinite)", 8, 34, 256, 16
CONTROL ADD COMBOBOX, hDlg, %IDC_COMBOBOX1, , 272, 32, 30, 24, %WS_CHILD _
OR %WS_VISIBLE OR %WS_TABSTOP OR %CBS_DROPDOWNLIST, %WS_EX_LEFT OR _
%WS_EX_LTRREADING OR %WS_EX_RIGHTSCROLLBAR
FOR lRes = 0 TO 9
COMBOBOX ADD hDlg, %IDC_COMBOBOX1, TRIM$(lRes)
NEXT
COMBOBOX SELECT hDlg, %IDC_COMBOBOX1, 1
CONTROL ADD FRAME, hDlg, %IDC_FRAME1, "Scan results", 8, 64, 400, 136
CONTROL ADD LABEL, hDlg, %IDC_LABEL2, TRIM$(0) + $Label2, 24, 95, 368, 24
CONTROL SET COLOR hDlg, %IDC_LABEL2, %BLUE, -1
CONTROL ADD LABEL, hDlg, %IDC_LABEL3, TRIM$(0) + $Label3, 24, 120, 368, 24
CONTROL SET COLOR hDlg, %IDC_LABEL3, RGB(0, 128, 0), -1
CONTROL ADD LABEL, hDlg, %IDC_LABEL4, TRIM$(0) + $Label4, 24, 145, 368, 24
CONTROL SET COLOR hDlg, %IDC_LABEL4, RGB(40, 40, 40), -1
CONTROL ADD LABEL, hDlg, %IDC_LABEL5, TRIM$(0) + $Label5, 24, 170, 368, 24
CONTROL SET COLOR hDlg, %IDC_LABEL5, RGB(128, 0, 0), -1
CONTROL ADD BUTTON, hDlg, %IDC_BUTTON2, "SCAN !", 8, 208, 128, 40
CONTROL ADD BUTTON, hDlg, %IDC_BUTTON3, "PREVIEW / TUNE", 144, 208, 128, 40
CONTROL ADD BUTTON, hDlg, %IDC_BUTTON4, "AUTOSET ICONS", 280, 208, 128, 40
DIALOG SHOW MODAL hDlg, CALL ProcMain TO lRes
FUNCTION = lRes
END FUNCTION
'------------------------------------------------------------------------------