Rename Recycle Bin
by Tau
Purpose:
The code will rename the Recyle Bin according to what the
user enters in an Inpput Box. After setting the proper registry
setting it will minimize all open windows and 'press' F5 to
refresh the desktop.
Requirements:
This code requires a Command Button named Command1 which can
be modified in the last Sub.
System:
This code will function on Visual Basic versions 5.0 and 6.0,
and is to be used with no BAS file.
Private
Declare Function
RegOpenKey& Lib "advapi32.dll"
Alias "RegOpenKeyA" (ByVal
hKey As Long,
ByVal lpSubKey
As String, phkResult
As Long)
Private Declare Function
RegOpenKeyEx& Lib "advapi32.dll"
Alias "RegOpenKeyExA" (ByVal
hKey&, ByVal lpszSubKey$,
ByVal dwOptions&, ByVal
samDesired&, lpHKey&)
Private Declare Function
RegSetValueEx& Lib "advapi32.dll"
Alias "RegSetValueExA" (ByVal
hKey&, ByVal lpszValueName$,
ByVal dwRes&, ByVal
dwType&, lpDataBuff As Any, ByVal
nSize&)
Private Declare Function
RegCloseKey& Lib "advapi32.dll"
(ByVal hKey&)
Private Declare Function
RegQueryValueEx& Lib "advapi32.dll"
Alias "RegQueryValueExA" (ByVal
hKey&, ByVal lpszValueName$,
ByVal lpdwRes&, lpdwType&,
ByVal lpDataBuff$, nSize&)
Private Declare Function
RegDeleteValue Lib "advapi32.dll"
Alias "RegDeleteValueA" (ByVal
hKey As Long,
ByVal lpValueName As
String) As Long
Private Declare Function
RegSetValue Lib "advapi32.dll"
Alias "RegSetValueA" (ByVal
hKey As Long,
ByVal lpSubKey
As String, ByVal
dwType As Long,
ByVal lpData As
String, ByVal cbData
As Long) As
Long
Private Declare Function
GetTickCount& Lib "kernel32"
()
Const WM_COMMAND = &H111
Const MIN_ALL = 419
Const VK_F5 = &H74
Const ERROR_SUCCESS
= 0&
'Registry Read/Write permissions:
Const
KEY_QUERY_VALUE = &H1&
Const KEY_SET_VALUE
= &H2&
Const KEY_CREATE_SUB_KEY
= &H4&
Const KEY_ENUMERATE_SUB_KEYS
= &H8&
Const KEY_NOTIFY = &H10&
Const KEY_CREATE_LINK
= &H20&
Const READ_CONTROL =
&H20000
Const WRITE_DAC = &H40000
Const WRITE_OWNER =
&H80000
Const SYNCHRONIZE =
&H100000
Const STANDARD_RIGHTS_REQUIRED
= &HF0000
Const STANDARD_RIGHTS_READ
= READ_CONTROL
Const STANDARD_RIGHTS_WRITE
= READ_CONTROL
Const STANDARD_RIGHTS_EXECUTE
= READ_CONTROL
Const KEY_READ = STANDARD_RIGHTS_READ
Or KEY_QUERY_VALUE Or
_
KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY
Const KEY_WRITE = STANDARD_RIGHTS_WRITE
Or KEY_SET_VALUE Or
_
KEY_CREATE_SUB_KEY
Const KEY_EXECUTE =
KEY_READ
Private Function
GetMainKeyHandle(ByVal sMainKey
As String) As
Long
'Returns the handle of the main key (the
constants below)
Const HKEY_CLASSES_ROOT
= &H80000000
Const HKEY_CURRENT_USER
= &H80000001
Const HKEY_LOCAL_MACHINE
= &H80000002
Const HKEY_USERS = &H80000003
Const HKEY_PERFORMANCE_DATA
= &H80000004
Const HKEY_CURRENT_CONFIG
= &H80000005
Const HKEY_DYN_DATA
= &H80000006
Select Case sMainKey
Case "HKEY_CLASSES_ROOT"
GetMainKeyHandle
= HKEY_CLASSES_ROOT
Case "HKEY_CURRENT_USER"
GetMainKeyHandle
= HKEY_CURRENT_USER
Case "HKEY_LOCAL_MACHINE"
GetMainKeyHandle
= HKEY_LOCAL_MACHINE
Case "HKEY_USERS"
GetMainKeyHandle
= HKEY_USERS
Case "HKEY_PERFORMANCE_DATA"
GetMainKeyHandle
= HKEY_PERFORMANCE_DATA
Case "HKEY_CURRENT_CONFIG"
GetMainKeyHandle
= HKEY_CURRENT_CONFIG
Case "HKEY_DYN_DATA"
GetMainKeyHandle
= HKEY_DYN_DATA
End Select
End Function
Private Function
GetHKEYHandle(ByRef sKeyName As String)
As Long
'This sub parses the passed keyname, separates
the main HKEY part from
'the rest of the keyname,
and returns the main key handle. Every
'Registry API function
requires this handle for the HKEY. The rest
'of the keyname is
passed to the API reg functions as another argument;
'therefore, we'll separate
them in this function. The value returned
'in the sKeyName argument
will contain the part of the keyname that
|