Exemplo de como escrever (definir) valores no registro do Windows. Segue o código comentado:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
/** exemplo 02 como escrever (definir valor) em chave de registro **// inclua'win' //01 - abra um registro já criado em modo KEY_ESCRITA (ou crie um): k = win.RegAbraChave( HKEY_CURRENT_USER , 'PrismaInfo', KEY_ESCRITA); //gravando em [HKEY_CURRENT_USER>SessionInformation] /** poderia ser: HKEY_CLASSES_ROOT; HKEY_LOCAL_MACHINE; HKEY_USERS OU HKEY_CURRENT_CONFIG (ao critério do programador. ** //02 use a funcao win.RegDefValor(parametros: ( chave , 'nome' , TIPO , "valor"); se k entao //caso haja erro o retorno é nulo //________________________________________________________________________ //03 ESCREVENDO STRING ret = win.RegDefValor( k , 'TESTE_STR' , REG_SZ , conv_w'uma string em prisma'); se ret entao imprima"SUCESSO" senao imprima"ERRO" fim ret = win.RegDefValor( k , 'TESTE_MULTISTR' , REG_MULTI_SZ , //os argumentos podem ser em linhas diferentes sem problema, só não esqueça da vírgula {'primeira string' , 'segunda string' , 'terceira string','quarta string', 'quinta string' } ); se ret entao imprima"SUCESSO" senao imprima"ERRO" fim //abra o regedit e veja nessa chave acima o nome TESTE e seu valor! //________________________________________________________________________ //04 ESCREVENDO NÚMERO: //vamos aproveitar a mesma chave aberta, mas pode abrir outra se quiser ret = win.RegDefValor( k , 'TESTE_NUM' , REG_DWORD , 1000000); se ret entao imprima"SUCESSO" senao imprima"ERRO" fim //lembrando que no registro fica em formato hexa, mas a função de leitura //obtém o valor em formato número prisma novamente. //________________________________________________________________________ //05 ESCREVENDO BYTES(BINARIO): (passe uma tabela) ret = win.RegDefValor( k , 'TESTE_BIN' , REG_BINARY , {0X01,0X04,0XFF,0XAF,0X09} ); se ret entao imprima"SUCESSO" senao imprima"ERRO" fim //06 não esqueça de fechar a chave aberta após usada. win.RegFecheChave(k); senao //se o retorno de abertura da chave for nulo, esta exceção será executada imprima(conv_c'valor de chave inválido:' , k); //Esta é uma nova função simples de mensagem em win, sem título e com ícone de atenção. win.poe( conv_w'chave não pode ser aberta ou não foi encontrada'); fim //modifique o nome de chave na função win.RegAbraChave acima só para ver o erro; |
Detalhes:
Veja que a função de abertura é simples:
chave = win.RegAbraChave( HKEY_CHAVE , ‘NomeSubchave ‘, KEY_TIPO); em que:
chave é o retorno da chave aberta ou nulo caso tenha erro.
HKEY_CHAVE = é o nome da chave mestra onde está a subchave que queremos abrir, pode ser:
ret = win.RegDefValor( subchave , ‘nome_valor’ , tipo , valor );
|
ret é o retorno da função que pode ser verdadeiro em caso de sucesso ou nulo caso falhe.
subchave – é a chave retornada da função de RegCrieChave ou RegAbraChave.
nome_valor – é o nome da variável que receberá o valor
tipo – é o tipo do valor que pode ser:
valor = é o valor de acordo com o tipo passado no argumento anterior.
E, por fim, não esqueça de fechar a chave aberta após o uso:
1 |
win.RegFecheChave(k); |
Veja um exemplo só de escrita binária:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
/** Exemplo 03 - escrevendo valores binários; ótimo para guardar informações como cor (RGB) ou chaves de ativação. Fiz este exemplo separado pois o valor binário é bem diferente; é uma matriz com a quantidade de números ao critério do programador cada número é de 0 a 255 em decimal ou de 0x00 a 0xff em hexa, tanto faz usar um como o outro. o retorno da leitura desse tipo de dado sempre será uma matriz de decimais. ** inclua'win' /** Abrindo em acesso total uma chave já criada, poderia ser em KEY_ESCRITA mas queremos ler o valor depois aproveitando a mesma chave, por isso o acesso total **// : k = win.RegAbraChave( HKEY_CURRENT_USER , 'PrismaInfo', KEY_ACESSO_TOTAL); se k entao bin = {1,20,100,255,12,13,14,254}; //você pode criar a tabela ou passar direto como parametro em chaves. //pode ser em formato numero ou hexa: tipo {0x01,0x02 ...} //vamos aproveitar a mesma chave aberta, mas pode abrir outra se quiser ret = win.RegDefValor( k , 'TESTE_BIN2' , REG_BINARY , bin ); se ret entao imprima'SUCESSO' senao imprima'ERRO' fim //agora como ler um valor binário lendo tab = win.RegLeiaChaveBin( k , 'TESTE_BIN2'); imprima( conv_c"\nÍndice decimal hexadecimal \n" ); para i = 1 , #tab inicio //mostrando o ( indice, valor , e formatando valor para hexa ) imprima( '[' .. i .. ']' , tab[i] , string.formate("%02x" , tab[i] ) ); //o retorno da tabela é em número. Caso queira em hexa use o string.formate fim //fim para i = 1 imprima'\n\npressione uma tecla para sair'; //e por último nunca se esqueça de fechar a chave aberta. win.RegFecheChave(k); fim leia(); |
Espero que tenha sido útil, se gostou compartilhe, ajude este projeto.
Qualquer dúvida use os comentários ou o fórum oficial aqui.