Ao adicionar o caminho da pasta bin Prisma no path de buscas do Windows, podemos usar “prisma.exe” ao invés de “C:\Prisma\1.0\bin\prisma.exe”. Ou seja, encurtamos o comando tanto para prisma quanto para qualquer programa que esteja nesta pasta. Vamos lá: Abra o painel de controle, vá para Sistema e Segurança, depois em Sistema. (Ou clique com…
Continue readingwin
Registro do Windows ( Enumerando chaves e valores)
Esse exemplo demonstrará como enumerar (listar) chaves, nomes ou valores. Extremamente importante se você quer fazer uma função de pesquisa no registro. 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 |
inclua'win'; k = win.RegAbraChave( HKEY_CURRENT_USER,'PrismaInfo', KEY_LEITURA); //enumerando os nomes da chave 'k' : "HKEY_CURRENT_USER\\PrismaInfo\\" v = win.RegEnumere( k ) se v entao //lendo os valores para i , v em ipares( v ) inicio imprima(v); //obtendo informacao de tipo de chave e valor, e tamanho: (retorno é uma tabela com os campos: tipo , tamanho local t = win.RegObtInfoValor(k , v ) imprima( 'tamanho: ' .. t.tamanho); se t.tipo == REG_BINARY entao imprima('\n'.. t.tipo , 'tipo binario') imprima( desempacote(win.RegLeiaChaveBin(k,v) ) ); senaose t.tipo == REG_SZ entao imprima('\n'.. t.tipo , 'tipo string') imprima( win.RegLeiaChaveStr(k,v) ); senaose t.tipo == REG_EXPAND_SZ entao imprima( '\n'.. t.tipo , 'tipo string com variaveis de ambiente') imprima( win.RegLeiaChaveStr(k,v) ); senaose t.tipo == REG_MULTI_SZ entao imprima( '\n'.. t.tipo , 'tipo multi string') local tt = win.RegLeiaChaveStr(k,v) ; imprima( desempacote(tt) ); senaose t.tipo == REG_DWORD entao imprima('\n'.. t.tipo , 'tipo numero') imprima( win.RegLeiaChaveNum(k,v) ); fim fim //fim para imprima( v.tipo ); fim win.RegFecheChave(k); win.poe'Ok para sair'; |
Detalhes: A função para listar todas as subchaves de uma chave maior é:
1 |
v = win.RegEnumere( k ) |
Onde ‘k’ é a chave aberta anteriormente. O retorno é uma tabela Prisma em…
Continue readingRegistro do Windows (lendo valores das chaves)
Este exemplo demonstra como ler os valores do registro, veja:
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 64 65 66 |
//exemplo 04 - como fazer leitura em uma chave de registro: /**__________________________________________________________________** //lendo uma string: (REG_SZ, REG_EXPAND_SZ ); inclua'win' //primeiro abra a chave em modo leitura: k = win.RegAbraChave( HKEY_CURRENT_USER,'PrismaInfo', KEY_LEITURA); //KEY_READ = MODO LEITURA //A funcao acima retorna a chave e tipo em caso de sucesso ou nulo quando em erro. se k entao //verifica se foi retornado uma chave aberta ou nulo v , tip = win.RegLeiaChaveStr( k , 'TESTE_STR' ); //use a funcao que lê strings. se tip == REG_SZ entao imprima'sz' fim se v entao win.Msg(nulo,v,'String') senao win.poe(conv_w"ERRO - chave não encontrada no registro ou não pôde ser aberta") fim; //multistring (o retorno é uma tabela de strings tab , tip = win.RegLeiaChaveStr( k , 'TESTE_MULTISTR' ) ; //use a funcao que lê strings. se tip == REG_MULTI_SZ entao se tipo(tab) == 'tabela' entao win.Msg( nulo , tabela.concat( tab , ' | '), 'MULTI_SZ'); fim senao win.poe( tab ); fim //fim tip == win.RegFecheChave(k); //agora que já obtivemos o valor, podemos fechar a chave, nunca se esqueça disso. fim //se k /**__________________________________________________________________** //lendo número k2 = win.RegAbraChave( HKEY_CURRENT_USER,'PrismaInfo', KEY_LEITURA); se k2 entao v = win.RegLeiaChaveNum ( k2 , 'TESTE_NUM' ); //um DWORD convertido para prisma number. se v entao win.Msg(nulo , v , 'Numero' ) senao win.poe(conv_w"ERRO - chave não encontrada no registro ou não pôde ser aberta") fim; win.RegFecheChave(k2); fim /**__________________________________________________________________** //LENDO UMA CHAVE BINARIA = REG_BINARY // O RETORNO É UMA TABELA DE NUMEROS: //cada número é de 0 a 255. (ou em hexa = 0 a ff; k3 = win.RegAbraChave( HKEY_CURRENT_USER,'PrismaInfo', KEY_LEITURA); se k3 entao v = win.RegLeiaChaveBin ( k3 , 'TESTE_BIN' ); se v entao win.Msg( nulo, tabela.concat(v,' | ') , 'Binary' ) senao win.poe(conv_w"ERRO - chave não encontrada no registro ou não pôde ser aberta") fim; win.RegFecheChave(k3); fim win.poe(conv_c"ok para sair..."); |
A novidade aqui fica por conta da função de leitura (As outras funções foram bem explicadas nos posts anteriores); 1 – abra uma chave com o tipo KEY_LEITURA ou KEY_ACESSO_TOTAL (acesso total para leitura, escrita, criação etc); 2 – use a chave retornada…
Continue readingRegistro do Windows – biblioteca win. (Criando uma chave, subchave e valores)
O registro do Windows é o lugar onde ficam gravadas muitas configurações importantes do sistema e também de programas instalados. Neste exemplo você vai ver como é possível manipular as chaves de registro através da biblioteca win em Prisma. Veja: Criando uma chave:
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 64 65 |
/** Exemplo 01 Como criar uma chave e uma subchave. E como gravar um valor string nela. ** inclua'win' //ante inclua a biblioteca win k = win.RegCrieChave( HKEY_CURRENT_USER , //root hkey uma variável predefinida em win. 'PrismaInfo', //subchave a ser criada REG_OPCAO_NAO_VOLATIL, //opcao = cria uma chave persistente KEY_ACESSO_TOTAL //TIPO DE ABERTURA, PARA CRIACAO DE SUB_CHAVE ); imprima(k); se k entao imprima"sucesso" ret = win.RegDefValor(k , 'valor1' , REG_EXPAND_SZ , '%TEMP% "\\PRISMA\\"' ); se ret entao imprima'sucesso' fim; ret = win.RegDefValor( k , '' , REG_SZ , 'ola mundo'); se ret entao imprima'sucesso' fim; win.RegFecheChave(k); fim //criando uma sub chave: //abrindo a chave criada com o modo de abertura KEY_CRIE_SUB_CHAVE: //poderia ser: KEY_ACESSO_TOTAL também. chave = win.RegAbraChave( HKEY_CURRENT_USER , 'PrismaInfo' , KEY_CRIE_SUB_CHAVE ); //criando sua subchave: /** a sub chave é uma chave normal dentro de outra, aquelas que no editor de registros é necessário clicar no + para vê-las. ex.: + |_PrismaInfo+ |_ Diretorios { prisma.exe = "C:\\Prisma\\1.0\\bin" } ** /**passando a chave criada para criarmos sua subchave** subchave = win.RegCrieChave( chave , //chave para criarmos sua sub chave 'Diretorios', //subchave a ser criada REG_OPCAO_NAO_VOLATIL, //opcao = cria uma chave persistente KEY_ACESSO_TOTAL //TIPO DE ABERTURA, PARA CRIACAO DE SUB_CHAVE ); se subchave entao //REG_OPCAO_VOLATIL = a chave é apagada ao reiniciar o Windows ret = win.RegDefValor( subchave , 'prisma.exe' , REG_SZ, 'C:\\Prisma\\1.0\\bin'); se ret entao imprima'valor gravado com sucesso' fim; win.RegFecheChave( subchave ); senao imprima( conv_c'chave não pôde ser gravada'); fim |
Detalhes: ret = win.RegCrieChave( chave, nome , opcao , tipo_acesso );…
Continue readingListar os arquivos e pastas de um diretório – biblioteca igdir
**Baixe Prisma mais atual – 12/10/2015 ou mais recente** A biblioteca igdir está em fase inicial e conta com apenas três funções por enquanto: dir.liste_arquivos(“pasta”); – retorna uma tabela Prisma com todos os arquivos e pastas do diretório passado como parâmetro. dir.liste_somente_arquivos(“pasta”); – retorna uma tabela com somente os nomes de arquivos. dir.liste_somente_pastas(“pasta”); – retorna…
Continue readingChamando processos com o win.Execute(…) Biblioteca win.
**Antes de mais nada vá à página de downloads e baixe a atualização mais recente de Prisma. (12/10/2015 ou superior).** Obs. outra grande mudança é que a biblioteca win foi desmembrada do interpretador prisma.exe devido a questões de portabilidade, facilidade de compilação, e economia de memória caso não precise usá-la. Basta incluí-la no seu…
Continue readingPrimeiros passos!
Primeiro programa prisma – o test drive Já com todos os arquivos instalados corretamente ( senão veja: onde baixar e como instalar ) Abra o interpretador modo texto dando duplo clique em prisma.exe (ele abrirá em modo interativo, semelhante a python); aparecerá algo como: 1 – digite o seguinte comando:
1 |
imprima ( "Ola Mundo Em Prisma!!!"); |
…
Continue reading