[DllImport("rapi.dll", CharSet=CharSet.Unicode)]
public static extern int CeRegSetValueEx(
uint hKey,
string lpValueName,
int lpReserved,
int dwType,
byte[] lpData,
int cbData);
uint HKEY_CLASSES_ROOT = 0x80000000;
uint HKEY_CURRENT_USER = 0x80000001;
uint HKEY_LOCAL_MACHINE = 0x80000002;
uint HKEY_USERS = 0x80000003;
function info on msdn at http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wceactsy/html/cerefCeRegSetValueExRAPI.asp
Please add some!
uint key;
uint ret = CeRegOpenKeyEx(HKEY_CURRENT_USER,"Software\\TestApp\\Settings",0,0x1,out key);
if(ret == 0)
{
// we have to convert everything to byte arrays and add the null terminator ourselves because of
// issues with pocket pc 2003 (worked fine with strings in 2000 and 2002)
byte[] lpData = new byte[System.Text.Encoding.Unicode.GetByteCount(textValue) + 1];
byte[] tmp = System.Text.Encoding.Unicode.GetBytes(textValue);
for(int i = 0; i < tmp.Length; i++)
lpData[i] = tmp[i];
lpData[lpData.Length - 1] = Convert.ToByte('\0');
CeRegSetValueEx(key,"thisVal",0, 1, lpData, lpData.Length + 1);
}
CeRegCloseKey(key);
Private Sub SaveValue(ByVal thisval As String, ByVal textvalue As String)
'please check this code below
Dim key As UInteger
Dim ret As UInteger = CeRegOpenKeyEx(HKEY_CURRENT_USER, "Software\TestApp\Settings", 0, &H1, key)
If ret = 0 Then
' we have to convert everything to byte arrays and add the null terminator ourselves because of
' issues with pocket pc 2003 (worked fine with strings in 2000 and 2002)
Dim lpData As Byte() = New Byte(System.Text.Encoding.Unicode.GetByteCount(textvalue)) {}
Dim tmp As Byte() = System.Text.Encoding.Unicode.GetBytes(textvalue)
For i As Integer = 0 To tmp.Length - 1
lpData(i) = tmp(i)
Next
lpData(lpData.Length - 1) = Convert.ToByte(ControlChars.NullChar)
CeRegSetValueEx(key, thisval, 0, 1, lpData, lpData.Length + 1) '??
End If
CeRegCloseKey(key)
End Sub