{"id":1497,"date":"2015-10-17T14:27:51","date_gmt":"2015-10-17T18:27:51","guid":{"rendered":"http:\/\/linguagemprisma.net\/blog\/?p=1497"},"modified":"2015-10-17T15:44:49","modified_gmt":"2015-10-17T19:44:49","slug":"registro-do-windows-lendo-valores-das-chaves","status":"publish","type":"post","link":"https:\/\/linguagemprisma.br4.biz\/blog\/win\/registro-do-windows-lendo-valores-das-chaves\/","title":{"rendered":"Registro do Windows (lendo valores das chaves)"},"content":{"rendered":"<p>Este exemplo demonstra como ler os valores do registro, veja:<\/p>\n<pre class=\"lang:prisma decode:true \">\/\/exemplo 04 - como fazer leitura em uma chave de registro:\r\n\r\n\/**__________________________________________________________________**\r\n\/\/lendo uma string: (REG_SZ, REG_EXPAND_SZ );\r\ninclua'win'\r\n\/\/primeiro abra a chave em modo leitura:\r\nk = win.RegAbraChave( HKEY_CURRENT_USER,'PrismaInfo', KEY_LEITURA); \/\/KEY_READ = MODO LEITURA\r\n\/\/A funcao acima retorna a chave e tipo em caso de sucesso ou nulo quando em erro.\r\nse k entao \/\/verifica se foi retornado uma chave aberta ou nulo\r\nv , tip = win.RegLeiaChaveStr( k , 'TESTE_STR' ); \/\/use a funcao que l\u00ea strings.\r\n\r\nse tip == REG_SZ entao imprima'sz' fim\r\n\r\nse v entao win.Msg(nulo,v,'String') senao win.poe(conv_w\"ERRO - chave n\u00e3o encontrada no registro ou n\u00e3o p\u00f4de ser aberta\") fim;\r\n\r\n\/\/multistring (o retorno \u00e9 uma tabela de strings\r\ntab , tip = win.RegLeiaChaveStr( k , 'TESTE_MULTISTR' ) ; \/\/use a funcao que l\u00ea strings.\r\nse tip == REG_MULTI_SZ entao \r\n  se tipo(tab) == 'tabela' entao\r\n\r\n   win.Msg( nulo , tabela.concat( tab , ' | '), 'MULTI_SZ');\r\n\r\n  fim\r\nsenao \r\n   win.poe( tab );\r\nfim \/\/fim tip ==\r\n\r\n\r\nwin.RegFecheChave(k); \/\/agora que j\u00e1 obtivemos o valor, podemos fechar a chave, nunca se esque\u00e7a disso.\r\n\r\nfim \/\/se k\r\n\r\n\/**__________________________________________________________________**\r\n\r\n\r\n\/\/lendo n\u00famero\r\n\r\n\r\nk2 = win.RegAbraChave( HKEY_CURRENT_USER,'PrismaInfo', KEY_LEITURA);\r\nse k2 entao\r\n\r\n  v = win.RegLeiaChaveNum ( k2 , 'TESTE_NUM' ); \/\/um DWORD convertido para prisma number.\r\n   se v entao win.Msg(nulo , v , 'Numero' ) senao win.poe(conv_w\"ERRO - chave n\u00e3o encontrada no registro ou n\u00e3o p\u00f4de ser aberta\") fim;\r\n  \r\nwin.RegFecheChave(k2);\r\n \r\nfim\r\n\r\n\r\n\r\n\/**__________________________________________________________________**\r\n\r\n\/\/LENDO UMA CHAVE BINARIA = REG_BINARY \/\/ O RETORNO \u00c9 UMA TABELA DE NUMEROS:\r\n\/\/cada n\u00famero \u00e9 de 0 a 255. (ou em hexa = 0 a ff;\r\n\r\nk3 = win.RegAbraChave( HKEY_CURRENT_USER,'PrismaInfo', KEY_LEITURA);\r\nse k3 entao\r\n\r\n  v = win.RegLeiaChaveBin ( k3 , 'TESTE_BIN' ); \r\n   se v entao win.Msg( nulo, tabela.concat(v,' | ') , 'Binary' ) senao win.poe(conv_w\"ERRO - chave n\u00e3o encontrada no registro ou n\u00e3o p\u00f4de ser aberta\") fim;\r\n  \r\nwin.RegFecheChave(k3);\r\n \r\nfim\r\n\r\nwin.poe(conv_c\"ok para sair...\");\r\n\r\n<\/pre>\n<p>A novidade aqui fica por conta da fun\u00e7\u00e3o de leitura (As outras fun\u00e7\u00f5es foram bem explicadas nos posts anteriores);<\/p>\n<hr \/>\n<p>&nbsp;<\/p>\n<p>1 &#8211; abra uma chave com o tipo KEY_LEITURA ou KEY_ACESSO_TOTAL (acesso total para leitura, escrita, cria\u00e7\u00e3o etc);<\/p>\n<p>2 &#8211; use a chave retornada na fun\u00e7\u00e3o de leitura logo abaixo:<\/p>\n<pre class=\"lang:prisma decode:true\">v , tip = win.RegLeiaChaveStr( k , 'Nome' );\/\/para string (REG_SZ, REG_MULTI_SZ, REG_EXPAND_SZ)<\/pre>\n<pre class=\"lang:prisma decode:true\">v , tip = win.RegLeiaChaveNum( k , 'Nome' );\/\/para numero (REG_DWORD, REG_QWORD)<\/pre>\n<pre class=\"lang:prisma decode:true\">v , tip = win.RegLeiaChaveBin( k , 'Nome' );\/\/Tabela de n\u00fameros(REG_BINARY);<\/pre>\n<p>Em que &#8216;k&#8217; \u00e9 a chave aberta anteriormente, e &#8216;Nome&#8217; \u00e9 o nome da subchave ou valor a ser lido.<\/p>\n<p>O tipo de retorno vai depender do tipo do valor. Para facilitar ao programador, esta fun\u00e7\u00e3o retorna duas vari\u00e1veis:<\/p>\n<p>v = valor que pode ser um n\u00famero, uma string ou tabela de hexa, de strings etc.<\/p>\n<p>tip = o tipo de retorno, basta fazer uma compara\u00e7\u00e3o para saber como usar o tipo. Ex.: se tip == RE_SZ entao [c\u00f3digo aqui para string] fim<\/p>\n<p>Ap\u00f3s receber os dados corretamente em Prisma, n\u00e3o precisar\u00e1 mais da chave aberta. Ent\u00e3o v\u00e1 para o passo 3;<\/p>\n<p>3 &#8211; feche a chave com a fun\u00e7\u00e3o win.RegFecheChave(chave);<\/p>\n<hr \/>\n<p>&nbsp;<\/p>\n<h1 style=\"text-align: center;\">Como receber os retornos:<\/h1>\n<p>Dependendo do tipo do dado no regedit o retorno ser\u00e1 um tipo prisma diferente,<\/p>\n<p>Veja abaixo:<\/p>\n<p>REG_DWORD = o retorno em prisma ser\u00e1 um n\u00famero, portanto poder\u00e1 fazer: opera\u00e7\u00f5es, compara\u00e7\u00f5es ou qualquer outro uso feito a um n\u00famero em prisma.<\/p>\n<p>REG_QWORD = igual ao de cima, com a diferen\u00e7a de que este, dentro do sistema Windows, \u00e9 64 bits. Para Prisma n\u00e3o faz diferen\u00e7a \u00e9 n\u00famero igual ao anterior.<\/p>\n<p>REG_SZ = uma string normal. Ao receber este valor voc\u00ea pode fazer qualquer opera\u00e7\u00e3o aplicada a uma string em Prisma.<\/p>\n<p>Dica: n\u00e3o tem como gravar n\u00fameros com casas decimais ap\u00f3s o ponto, ent\u00e3o converta para string e grave como REG_SZ. Durante a leitura basta converter para n\u00famero novamente em Prisma com as fun\u00e7\u00f5es:str = convstring(numero); e num = convnumero(str);<\/p>\n<p>REG_BINARY = o valor retornado \u00e9 uma tabela (matriz) de n\u00fameros, bastando usar o comando &#8216;para&#8217; ou &#8216;enquanto&#8217; para criar um la\u00e7o de repeti\u00e7\u00e3o e ler todos os \u00edndices da tabela. Ap\u00f3s ler cada dado dessa tabela, poder\u00e1 fazer qualquer opera\u00e7\u00e3o aplic\u00e1vel a um n\u00famero em Prisma.<\/p>\n<p>REG_MULTI_SZ\u00a0 = o valor recebido \u00e9 uma tabela de strings (matriz de strings), use o comando &#8216;para&#8217; ou &#8216;enquanto&#8217; para ler cada \u00edndice da tabela, e depois poder\u00e1 fazer qualquer opera\u00e7\u00e3o aplic\u00e1vel a uma string em Prisma.<\/p>\n<p>REG_EXPAND_SZ = o valor retornado \u00e9 uma string podendo conter vari\u00e1veis de ambiente, como &#8220;%TEMP%&#8221;; use como uma string em Prisma.<\/p>\n<p>&nbsp;<\/p>\n<p>Espero que tenha sido \u00fatil. Qualquer d\u00favida ou cr\u00edtica poste nos coment\u00e1rios ou <a href=\"http:\/\/linguagemprisma.net\/prisma_forum\" target=\"_blank\">no f\u00f3rum oficial aqui;<\/a><\/p>\n<p>Att. Adalberto Amorim Felipe<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Este exemplo demonstra como ler os valores do registro, veja: \/\/exemplo 04 &#8211; como fazer leitura em uma chave de registro: \/**__________________________________________________________________** \/\/lendo uma string: (REG_SZ, REG_EXPAND_SZ ); inclua&#8217;win&#8217; \/\/primeiro abra a chave em modo leitura: k = win.RegAbraChave( HKEY_CURRENT_USER,&#8217;PrismaInfo&#8217;, KEY_LEITURA); \/\/KEY_READ = MODO LEITURA \/\/A funcao acima retorna a chave e tipo em caso&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9],"tags":[],"class_list":["post-1497","post","type-post","status-publish","format-standard","hentry","category-win"],"_links":{"self":[{"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/posts\/1497","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/comments?post=1497"}],"version-history":[{"count":6,"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/posts\/1497\/revisions"}],"predecessor-version":[{"id":1512,"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/posts\/1497\/revisions\/1512"}],"wp:attachment":[{"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/media?parent=1497"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/categories?post=1497"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/tags?post=1497"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}