File "registry.inc"
Path: /VLC Rotate extension/registry.inc
File size: 6.45 KB
MIME-type:
Charset: utf-8
'REGISTRY.INC
'General Purpose Registry Access
'Uses: win32api.inc
'Functions:
' DelRegValue(lpKey As Long,ByVal cMainkey As String, ByVal Key As String) As Long
' GetRegValue(lpKey As Long,ByVal cMainkey As String, ByVal Key As String) As String
' SetRegValue(lpKey As Long,ByVal cMainkey As String, ByVal Key As String, ByVal Setting As String) As Long
' DelRegKey(lpKey As Long, Key As String) Export As Long
' IsExtensionRegistered(FileExt AS STRING) AS LONG
' RegisterExtension(FileExt AS STRING, FileDesc AS STRING) AS LONG
'------------------------------------------------------------------------------
FUNCTION DelRegValue(lpKey AS LONG,BYVAL cMainkey AS STRING, BYVAL Key AS STRING) AS LONG
ON ERROR RESUME NEXT
LOCAL RetCode AS LONG
LOCAL hKey AS LONG
DIM acMainkey AS ASCIIZ * 300
acMainkey = cMainkey
RetCode = RegOpenKeyEx(lpKey, acMainkey, 0&, %KEY_ALL_ACCESS, hKey)
IF RetCode = %ERROR_SUCCESS THEN
IF Key$ = "*" THEN Key$ = CHR$(0,0)
RetCode = RegDeleteValue(hKey, BYVAL STRPTR(Key$))
END IF
RegCloseKey hKey
FUNCTION = RetCode
END FUNCTION
'------------------------------------------------------------------------------
'------------------------------------------------------------------------------
FUNCTION GetRegValue(lpKey AS LONG,BYVAL cMainkey AS STRING, BYVAL Key AS STRING) AS STRING
ON ERROR RESUME NEXT
DIM RetCode AS LONG
DIM hKey AS LONG
DIM KeyNameA AS ASCIIZ * 256
DIM zTmp AS ASCIIZ * 256
DIM acMainKey AS ASCIIZ * 300
DIM ZZZ AS STRING
DIM szdat&, cbData&, KeyType&
acMainKey = cMainKey
RetCode = RegOpenKeyEx(lpKey, acMainkey, 0&, %KEY_ALL_ACCESS, hKey)
IF RetCode = %ERROR_SUCCESS THEN
IF Key$ = "*" THEN Key$ = CHR$(0,0)
szdat&=256
DIM zbuffer AS ASCIIZ*256
KeyNameA = Key
cbData& = SIZEOF(zTmp)
RetCode = RegQueryValueEx(BYVAL hKey, KeyNameA, BYVAL 0, KeyType&, zTmp, cbData&)
ZZZ = zTmp
FUNCTION = ZZZ
EXIT FUNCTION
END IF
FUNCTION = ""
END FUNCTION
'------------------------------------------------------------------------------
'------------------------------------------------------------------------------
FUNCTION SetRegValue(lpKey AS LONG,BYVAL cMainkey AS STRING, BYVAL Key AS STRING, BYVAL Setting AS STRING) AS LONG
ON ERROR RESUME NEXT
LOCAL hKey AS LONG
LOCAL Result AS LONG
LOCAL zText AS ASCIIZ * 2048
IF Key$ = "*" THEN Key$ = CHR$(0,0)
IF RegCreateKeyEx(lpKey, cMainKey + CHR$(0),0, "", %REG_OPTION_NON_VOLATILE, _
%KEY_ALL_ACCESS, BYVAL %NULL, hKey, Result) <> %ERROR_SUCCESS THEN
FUNCTION = 0
EXIT FUNCTION
END IF
zText = Setting
IF LEN(Setting) THEN
RegSetValueEx hKey, Key+CHR$(0), 0, %REG_SZ, zText, LEN(Setting)+1
ELSE
RegSetValueEx hKey, Key+CHR$(0), 0, %REG_SZ, zText, 1
END IF
RegCloseKey hKey
FUNCTION = 0
END FUNCTION
'------------------------------------------------------------------------------
'------------------------------------------------------------------------------
FUNCTION DelRegKey(lpKey AS LONG, Key AS STRING) EXPORT AS LONG
ON ERROR RESUME NEXT
LOCAL zStrKey AS ASCIIZ * 255, hKey AS LONG, Result AS LONG
zStrKey = Key
IF RegOpenKeyEx(BYVAL lpKey,zStrKey,0, %KEY_ALL_ACCESS, hKey) <> %ERROR_SUCCESS THEN EXIT FUNCTION
Result = RegDeleteKey(lpKey, zStrKey)
RegCloseKey hKey
FUNCTION = Result
END FUNCTION
'------------------------------------------------------------------------------
'
' RegOpenSection
'------------------------------------------------------------------------------
FUNCTION RegOpenSection (BYVAL Key AS LONG, Section AS ASCIIZ) AS LONG
DIM hKey AS LONG
DIM Result AS LONG
' Create the section
IF RegCreateKeyEx(Key, Section, 0, "", %REG_OPTION_NON_VOLATILE, _
%KEY_ALL_ACCESS, BYVAL %NULL, hKey, Result) <> %ERROR_SUCCESS THEN
EXIT FUNCTION
END IF
'- Return the registry key handle
FUNCTION = hKey
END FUNCTION
'
' RegClose
'------------------------------------------------------------------------------
FUNCTION RegClose (BYVAL hKey AS LONG) AS LONG
RegCloseKey hKey
END FUNCTION
'
' RegSetString
'------------------------------------------------------------------------------
FUNCTION RegSetString (BYVAL hKey AS LONG, Entry AS ASCIIZ, Value AS ASCIIZ) AS LONG
'- Save the value for the entry
IF LEN(Value) THEN
FUNCTION = RegSetValueEx(hKey, Entry, 0, %REG_SZ, Value, LEN(Value) + 1)
ELSE
FUNCTION = RegSetValueEx(hKey, Entry, 0, %REG_SZ, BYVAL %NULL, 0)
END IF
END FUNCTION
'
' IsExtensionRegistered
'------------------------------------------------------------------------------
FUNCTION IsExtensionRegistered(FileExt AS STRING) AS LONG
DIM hKey AS LONG
DIM zExtension AS ASCIIZ * 10
DIM zBuffer AS ASCIIZ * 300
zExtension = FileExt ' ".ext"
FUNCTION = %False
'- Open the key
hKey = RegOpenSection(%HKEY_CLASSES_ROOT, zExtension)
IF ISFALSE(hKey) THEN EXIT FUNCTION
'- Check it's value
IF RegQueryValueEx(hKey, "", 0, %REG_SZ, zBuffer, SIZEOF(zBuffer) - 1) = %ERROR_SUCCESS THEN
'ShowMessage "zBuffer = " + zBuffer
IF TRIM$(zBuffer) <> "" THEN FUNCTION = %True
END IF
RegClose hKey
END FUNCTION
'
' RegisterExtension
'
' This function associates the extension in the registry
'
' It is called like this:
'
' RegisterProgram ".ext", "Program Description", "c:\windows\system\myprog.exe %1"
'------------------------------------------------------------------------------
FUNCTION RegisterExtension(FileExt AS STRING, FileDesc AS STRING) AS LONG
DIM hKey AS LONG
DIM zExtension AS ASCIIZ * 10
DIM zDescription AS ASCIIZ * 50
DIM zOpen AS ASCIIZ * 300
'- Set the variables
zExtension = FileExt
zDescription = FileDesc
zOpen = EXE.FULL$ + " %1"
'- Write out extension
hKey = RegOpenSection(%HKEY_CLASSES_ROOT, zExtension)
IF ISFALSE(hKey) THEN EXIT FUNCTION
RegSetString hKey, "", zDescription
RegClose hKey
'- Write out description
hKey = RegOpenSection(%HKEY_CLASSES_ROOT, zDescription)
IF ISFALSE(hKey) THEN EXIT FUNCTION
RegSetString hKey, "", zDescription
RegClose hKey
'- The open instruction
hKey = RegOpenSection(%HKEY_CLASSES_ROOT, TRIM$(zDescription) + "\shell\open\command")
IF ISFALSE(hKey) THEN EXIT FUNCTION
RegSetString hKey, "", zOpen
RegClose hKey
FUNCTION = %True
END FUNCTION