Wilson WindowWare Tech Support

WinBatch WinBatch+Compiler WebBatch
Home | Tech Database | Tech BBS | White Papers | Purchase


How to Export a Color Scheme from the Registry and Save to a File

Keywords:   export color scheme

Question:

I'd like to write/export a single "color-scheme" to a file with the registry functions of Winbatch. This file should have the format/size of a "normal reg-file", e.g.
Regedit4
[Hkey_current_user\Control Panel\Appearance\Schemes]
"Schemename"=hex:00,01,00,01,......
EOF
Unfortunately it is not possible to export a single Color-scheme with the export-function of regedit.

Answer:

Here is some code that seems to work.
keyname="Control Panel\Appearance\Schemes"
dataitem="brick"
filename="myscheme.reg"
;- - - -
Scheme=strcat(keyname,"[",dataitem,"]")
stuff=RegQueryBin(@REGCURRENT,Scheme)
;Message("Stuff",stuff)

bb=BinaryAlloc(100000)   ; allocate work space
ptr=0
ptr=ptr+BinaryPokeStr(bb,ptr,strcat("REGEDIT4",@CRLF,@CRLF))
ptr=ptr+BinaryPokeStr(bb,ptr,strcat("[",keyname,"]",@crlf))
ptr=ptr+BinaryPokeStr(bb,ptr,strcat('"',dataitem,'"=hex:'))

stuff=strreplace(stuff," ",",")
stuffsize=strlen(stuff)
indent=0

while stuffsize>60
   part=strsub(stuff,1,60)
   stuff=strsub(stuff,61,-1)
   stuffsize=strlen(stuff)
   if indent==0
      indent=1
   else
      ptr=ptr+BinaryPokeStr(bb,ptr,"  ")
   endif
   ptr=ptr+BinaryPokeStr(bb,ptr,strcat(part,"\",@crlf))
endwhile 

if indent==1
   ptr=ptr+BinaryPokeStr(bb,ptr,"  ")
endif
ptr=ptr+BinaryPokeStr(bb,ptr,strcat(stuff,@crlf))

BinaryWrite(bb,filename)
BinaryFree(bb)
Message("Complete.   See",filename)

Article ID:   W13718
Filename:   Export Color Scheme from Registry.txt