Rapid-Q Documentation by William Yu (c)1999 Appendix A: QREGISTRY


QREGISTRY Component

QRegistry encapsulates functions that operate on the Window's system registry.
(*)  Registry is composed of Keys and SubKeys. Each Key and SubKey 
(*)  can containone or more variables named Values. These Values 
(*)  have a ValueName and a ValueData.
(*)  Example :
(*)    Key HKEY_CLASSES_ROOT .Bas\Shell\Open\Command
(*)    contains a Default value who's ValueName is "" and whose
(*)    value is "C:\Rapidq\RapidQ.Exe %1"
(*)    ValueName maybe "AnyName". The default ValueName is ""
(*)  The Registry can be edited with Regedit.Exe or regedt32.Exe

QRegistry Properties
Field Type R/W Default




CurrentKey INTEGER R
CurrentPath STRING R
(*)GetDataSize(ValueName$) INTEGER R
(*)GetDataType(ValueName$) INTEGER R
HasSubKeys INTEGER R
KeyItemCount INTEGER R
ValueItemCount INTEGER R
RootKey INTEGER RW HKEY_CURRENT_USER

QRegistry Methods
Method Type Description Params




CloseKey SUB Closes opened key 0
CreateKey FUNCTION (Key$) AS INTEGER Creates a new key in CurrentPath. 1
DeleteKey FUNCTION (Key$) AS INTEGER Deletes key. 1
DeleteValue FUNCTION (ValName$) AS INTEGER Deletes a value data. 1
KeyExists FUNCTION (Key$) AS INTEGER Returns 0 or 1 if key exists. 1
KeyItem FUNCTION (Index%) AS STRING Retrieve the names of the subkeys 1
MoveKey FUNCTION (OldKey$, NewKey$, Delete%) Moves existing key, subkeys, and data values. 3
OpenKey FUNCTION (Key$, CanCreate%) CanCreate specifies whether to create the specified key if it does not exist. 2
(*)ReadBinary (*)FUNCTION (ValueName$, Index%) AS BYTE Return binary value of specified key(Bug : Index must Start at -1) 2
(*)ReadFloat FUNCTION (ValueName$) AS DOUBLE Return double value of specified key 1
(*)ReadInteger FUNCTION (ValueName$) AS INTEGER Return integer value of specified key 1
(*)ReadString FUNCTION (ValueName$) AS STRING Return string value of specified key 1
RegistryConnect FUNCTION (CompName$) AS INTEGER Establishes connection to another computer's registry. 1
RenameValue (*)SUB (OldValueName$, NewValueName$) Renames existing data value. 2
ValueExists FUNCTION (ValueName$) AS INTEGER Returns 0 or 1 if data value Value$ exists. 1
ValueItem FUNCTION (Index%) AS STRING Retrieve the names of the data values 1
WriteBinary (*)SUB (ValueName$, BYTE(), Size%) Write Array of BYTEs in the specified key 3
WriteFloat (*)SUB (ValeName$, ValueData#) Write double value in the specified key 2
WriteInteger (*)SUB (ValueName$, ValueData&) Write integer value in the specified key 2
WriteString (*)SUB (ValueName$, ValueData$) Write string in the specified key 2
(*) Notes :
(*)    - READ and WRITE requires the mother KEY to be OPENED first with OpenKey(Key)
(*)    - WRITE subs Create ValueName if it does not exist
(*)    - MOVEKEY sets undefined ValueDatas of String type to "", which can be a problem.
(*)      MOVEKEY with Delete% set to one is like renaming a key.

QRegistry Events
Event Type Occurs when... Params






QRegistry Examples
'  Detect if your computer is connected to the internet

Const HKEY_LOCAL_MACHINE = &H80000002

DIM Registry AS QRegistry

Registry.RootKey = HKEY_LOCAL_MACHINE
Registry.OpenKey("System\CurrentControlSet\Services\RemoteAccess", 0)

'(index was 0 originally, but due to ReadBinary bug it must be -1)
IF Registry.ReadBinary("Remote Connection", -1) = 1 THEN
  ShowMessage("You're connected!")
ELSE
  ShowMessage("You're not connected!")
END IF
Registry.CloseKey '(*)
(*) Lines corrected in april 2004
Prev Component Contents Next Component