File "mougino apps custo manager.bas"
Path: /apps custo manager/mougino apps custo manager.bas
File size: 6.62 KB
MIME-type: text/plain
Charset: utf-8
#COMPILE EXE "mougino apps custo manager.exe"
#DIM ALL
#INCLUDE "WIN32API.INC"
#RESOURCE "res\customgr.pbr"
'--------------------------------------------------------------------------------
FUNCTION PBMAIN () AS LONG
ShowCustoManager()
END FUNCTION
'--------------------------------------------------------------------------------
'--------------------------------------------------------------------------------
MACRO DELETE_CUSTO
LISTBOX GET TEXT CB.HNDL, 1001, i TO e
e = LocalAppData + e
IF MessageBox(CB.HNDL, "Are you sure you want to delete the app custo for" _
+$CR+e+" ?", EXE.NAME$, %MB_YESNO OR %MB_ICONQUESTION) = %IDYES THEN
KILL e
LISTBOX DELETE CB.HNDL, 1001, i
END IF ' end of answered 'Yes' to delete msgbox
END MACRO
'--------------------------------------------------------------------------------
'--------------------------------------------------------------------------------
CALLBACK FUNCTION ProcCustoManager
LOCAL e AS STRING
LOCAL i AS LONG
IF CB.MSG = %WM_COMMAND THEN
SELECT CASE AS LONG CB.CTL
CASE 999 ' CLICK ON "DELETE"
LISTBOX GET SELECT CB.HNDL, 1001 TO i
IF i > 0 THEN ' a widget is selected
DELETE_CUSTO
END IF
CASE 1001 ' DOUBLE-CLICK ON LISTBOX
IF CB.CTLMSG = %LBN_DBLCLK THEN ' > SIMULATE OK BUTTON
DIALOG POST CB.HNDL, %WM_COMMAND, MAKDWD(%IDOK,1), 0
END IF
CASE %IDOK ' CLICK ON OK BUTTON > VIEW
LISTBOX GET SELECT CB.HNDL, 1001 TO i
IF i > 0 THEN ' a widget is selected
LISTBOX GET TEXT CB.HNDL, 1001, i TO e
ShellExecute 0, "open", LocalAppData + e, "", "", %SW_SHOW
END IF
CASE %IDCANCEL ' CLICK ON CANCEL BUTTON
DIALOG END CB.HNDL
EXIT FUNCTION
END SELECT
ELSEIF CB.MSG = %WM_VKEYTOITEM THEN
LISTBOX GET SELECT CB.HNDL, 1001 TO i
IF LOWRD(CB.WPARAM) = %VK_DELETE AND i > 0 THEN ' TRAP DEL KEY TO DELETE A CUSTO
DELETE_CUSTO
FUNCTION = -2 ' listbox should ignore, we took care of actions
ELSE
FUNCTION = -1 ' listbox should perform default action
END IF ' end of treating DEL key
END IF
END FUNCTION
'--------------------------------------------------------------------------------
'--------------------------------------------------------------------------------
SUB PopulateCustos(BYVAL hDlg AS DWORD, BYVAL lID AS LONG)
LOCAL e, xt AS STRING
LOCAL i AS LONG
xt = "ini,pos,siz,lng"
LISTBOX RESET hDlg, lID
FOR i = 1 TO PARSECOUNT(xt)
e = DIR$(LocalAppData + "*." + PARSE$(xt,i))
WHILE e <> ""
'IF INSTR(e, "_") <> 0 THEN _
LISTBOX ADD hDlg, lID, e
e = DIR$(NEXT)
WEND
DIR$ CLOSE
NEXT
END SUB
'--------------------------------------------------------------------------------
'--------------------------------------------------------------------------------
SUB ShowCustoManager()
LOCAL hD AS DWORD
DIALOG NEW 0, EXE.NAME$,,, 259, 129, _
%DS_MODALFRAME OR %WS_CAPTION OR %WS_POPUP OR %WS_SYSMENU, TO hD
' SetDialogIconFromDll hD, "Shell32.dll", 22
DIALOG SET ICON hD, "ICO1"
CONTROL ADD LABEL, hD, 1000, "Select an app to view/delete its customization:", _
5, 4, 160, 10
CONTROL ADD LISTBOX, hD, 1001, , 5, 15, 250, 100, _
%LBS_NOTIFY OR %WS_TABSTOP OR %WS_VSCROLL _
OR %LBS_USETABSTOPS OR %LBS_WANTKEYBOARDINPUT, _
%WS_EX_CLIENTEDGE
CONTROL ADD BUTTON, hD, %IDCANCEL, "Cancel", -10, -10, 0, 0
CONTROL ADD BUTTON, hD, %IDOK, "View", 130, 110, 55, 15
CONTROL ADD BUTTON, hD, 999, "Delete", 190, 110, 55, 15
PopulateCustos hD, 1001
DIALOG SHOW MODAL hD, CALL ProcCustoManager
END SUB
'--------------------------------------------------------------------------------
'--------------------------------------------------------------------------------
DECLARE FUNCTION SHGetFolderPath LIB "Shell32.dll" _
ALIAS "SHGetFolderPathA" (BYVAL hwnd AS DWORD, BYVAL csidl AS LONG, _
BYVAL hToken AS DWORD, BYVAL dwFlags AS DWORD, pszPath AS ASCIIZ) AS LONG
%CSIDL_STARTUP = &H0007 ' <user name>\Start Menu\Programs\Startup
%CSIDL_LOCAL_APPDATA = &H001c ' <user name>\Local Settings\Application Data (non roaming)
'--------------------------------------------------------------------------------
FUNCTION StartupFolder AS STRING
LOCAL szBaseFolder AS ASCIIZ * %MAX_PATH
ShGetFolderPath (BYVAL 0, %CSIDL_STARTUP, BYVAL 0, BYVAL 0, szBaseFolder)
FUNCTION = TRIM$(szBaseFolder) + "\"
END FUNCTION
'--------------------------------------------------------------------------------
FUNCTION LocalAppData AS STRING
LOCAL szBaseFolder AS ASCIIZ * %MAX_PATH
ShGetFolderPath (BYVAL 0, %CSIDL_LOCAL_APPDATA, BYVAL 0, BYVAL 0, szBaseFolder)
FUNCTION = TRIM$(szBaseFolder) + "\"
END FUNCTION
'--------------------------------------------------------------------------------
'--------------------------------------------------------------------------------
SUB SetDialogIconFromDll(hDlg AS DWORD, windll AS STRING, iconId AS LONG)
LOCAL hIconBig AS DWORD
LOCAL hIconSmall AS DWORD
ExtractIconEx((windll), iconId, BYVAL VARPTR(hIconBig), BYVAL VARPTR(hIconSmall), 1)
SetClassLong hDlg, %GCL_HICONSM, hIconSmall
SetClassLong hDlg, %GCL_HICON, hIconBig
SendMessage hDlg, %WM_SETICON, %ICON_SMALL, hIconSmall
SendMessage hDlg, %WM_SETICON, %ICON_BIG, hIconBig
END SUB
'--------------------------------------------------------------------------------
'--------------------------------------------------------------------------------
'SUB SetLViconFromDll(hDlg AS DWORD, ctl AS LONG, windll AS STRING, iconId AS LONG)
'' Display an icon from a DLL inside an Icon ListView
' LOCAL hImgLst AS DWORD
' LOCAL hIcon AS LONG
'
' hIcon = ExtractIcon(BYVAL 0, (windll), iconId)
'
' IMAGELIST NEW ICON 32, 32, 24, 1 TO hImgLst ' width, height, depth, initial
' LISTVIEW SET IMAGELIST hDlg, ctl, hImgLst, %LVSIL_NORMAL
' IMAGELIST ADD ICON hImgLst, hIcon
' LISTVIEW INSERT ITEM hDlg, ctl, 1, 1, ""
'
' DestroyIcon hIcon
'END SUB
'--------------------------------------------------------------------------------