{"id":358,"date":"2015-01-04T00:38:02","date_gmt":"2015-01-04T00:38:02","guid":{"rendered":"http:\/\/linguagemprisma.net\/?page_id=358"},"modified":"2016-04-07T21:17:52","modified_gmt":"2016-04-08T01:17:52","slug":"especial-biblioteca-win-algumas-funcoes-do-windows-h","status":"publish","type":"page","link":"https:\/\/linguagemprisma.br4.biz\/blog\/especial-biblioteca-win-algumas-funcoes-do-windows-h\/","title":{"rendered":"Fun\u00e7\u00f5es da biblioteca Prisma Win.dll (windows.h em C)"},"content":{"rendered":"<h1><\/h1>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-2356\" src=\"https:\/\/linguagemprisma.br4.biz\/blog\/wp-content\/uploads\/2016\/01\/logo_prisma148.png\" alt=\"logo_prisma148\" width=\"148\" height=\"99\" \/><\/p>\n<p>&nbsp;<\/p>\n<h1><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1450\" src=\"https:\/\/linguagemprisma.br4.biz\/blog\/wp-content\/uploads\/2015\/01\/win_Msg_abertura.png\" alt=\"win_Msg_abertura\" width=\"262\" height=\"146\" \/><\/h1>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>Ol\u00e1 a todos, quero fazer aqui uma s\u00e9rie de receitas prontas exemplificando diversos recursos \u00fateis da lib <strong><em>win<\/em><\/strong> que faz parte do conjunto nativo de bibliotecas de fun\u00e7\u00f5es de Prisma.<\/p>\n<p>Nela vamos encontrar algumas fun\u00e7\u00f5es realmente importantes, como obter Pasta e nome do usu\u00e1rio, pasta system32, data, eventos como pressionar de tecla, fechar ou ocultar janelas abertas, mensagem box entre outros recursos.<\/p>\n<p>Pretendo aqui enumer\u00e1-los em ordem um a um e explicando como usar, n\u00e3o ficar\u00e1 terminada, sempre estar\u00e1<\/p>\n<p>em constante mudan\u00e7as para acrescentar novas fun\u00e7\u00f5es:<\/p>\n<p>&nbsp;<\/p>\n<h2>M\u00e3os \u00e0 obra:<\/h2>\n<p>&nbsp;<\/p>\n<h3>Pausar a execu\u00e7\u00e3o do programa:<\/h3>\n<p>win.Durma (tempo) ; \/\/ou win.Aguarde (tempo ) ; \/\/onde tempo \u00e9 em milisegundos:<\/p>\n<pre class=\"lang:prisma decode:true\">inclua'win'\r\nwin.Durma( 1000 );  \/\/para o programa por 1 segundo ( ou mil milisegundos);\r\n\r\n      win.Aguarde ( 1000 ); \/\/ mesma fun\u00e7\u00e3o s\u00f3 mudou o nome!<\/pre>\n<p>&nbsp;<\/p>\n<h3><strong>Obtendo o Nome do Usu\u00e1rio:<\/strong><\/h3>\n<p>win.ObtNomeUsuario ( ) ; \/\/retorna o nome do usu\u00e1rio do sistema em uma string.<\/p>\n<p>ex.:<\/p>\n<pre class=\"font:consolas lang:prisma decode:true\"> inclua'win'\r\nimprima (\"O usuario deste computador e \" .. win.ObtNomeUsuario ( )    ); \/\/a sa\u00edda \u00e9 o nome do usu\u00e1rio logado.<\/pre>\n<p>&nbsp;<\/p>\n<h3><strong>Obtendo a pasta Temp:<\/strong><\/h3>\n<p>win.ObtPastaTemp() ; \/\/retorna a pasta temp do sistema;<\/p>\n<p>ex.:<\/p>\n<pre class=\"font:consolas lang:prisma decode:true\"> inclua'win' \r\nimprima ( \"O local Temp deste computador fica em \" .. win.ObtPastaTemp ( )    ); \/\/imprima o diret\u00f3rio Temp do computador.<\/pre>\n<p>&nbsp;<\/p>\n<h3><strong>Obtendo a pasta System:<\/strong><\/h3>\n<p>win.ObtPastaSystem ( );  \/\/retorna uma string do endere\u00e7o da pasta system do Windows<\/p>\n<p>ex.:<\/p>\n<pre class=\"font:consolas lang:prisma decode:true\"> inclua'win'\r\n imprima ( \"A pasta system deste computador fica em \" .. win.ObtPastaSystem( )   );<\/pre>\n<p>&nbsp;<\/p>\n<h3><strong>Obtendo o Tempo Local:<\/strong><\/h3>\n<p>win.ObtTempoLocal ( ); \/\/ retorna uma tabela contendo os campos Hora, Minuto ,  Segundo , Milisegundos, Dia , Mes , Ano,<\/p>\n<p>DiaDaSemana ;<\/p>\n<p>ex.:<\/p>\n<pre class=\"lang:prisma decode:true\"> inclua'win'\r\ntempo = win.ObtTempLocal ( ); \/\/atribuindo a tabela\r\n\r\n\/\/usando a tabela:\r\n\r\nimprima( tempo.Dia .. \"\/\" .. tempo.Mes .. \"\/\" .. tempo.Ano .. \"nn\");\r\n\r\nimprima ( tempo.Hora .. \":\" .. tempo.Minuto .. \":\" .. tempo.Segundo .. \"nn\");\r\n\r\n\/\/ as sa\u00eddas ser\u00e3o: dia\/mes\/ano e hora:minuto:segundo locais;<\/pre>\n<p>&nbsp;<\/p>\n<h3><strong>Obtendo Pasta Windows:<\/strong><\/h3>\n<p>win.ObtPastaWindows  (  ); \/\/retorna o local da pasta WINDOWS;<\/p>\n<p>ex.:<\/p>\n<pre class=\"lang:prisma decode:true\"> inclua'win' \r\n pastawin = win.ObtPastaWindows ( ); \/\/colocando numa vari\u00e1vel;\r\n\r\n        imprima ( pastawin ); \/\/imprimindo o resultado;<\/pre>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<h3>Copiar Aquivo:<\/h3>\n<p>win.CopieArquivo( ) : fun\u00e7\u00e3o muito importante, com ela voc\u00ea copia um arquivo, n\u00e3o importa o formato, a c\u00f3pia \u00e9 igual ao<\/p>\n<p>arquivo original. Ex.:<\/p>\n<pre class=\"lang:prisma decode:true\"> inclua'win' \r\nwin.CopieArquivo('arquivo.txt' , 'arquivo_copia.txt'); \/\/( original , destino )\r\n<\/pre>\n<h3><\/h3>\n<h3><strong>Mover Arquivo:<\/strong><\/h3>\n<p>win.MovaArquivo ( &#8220;origem&#8221; , &#8220;destino&#8221;); \/\/move um arquivo origem para destino;<\/p>\n<p>ex:<\/p>\n<pre class=\"lang:prisma decode:true\"> inclua'win'\r\nwin.MovaArquivo( \"teste.txt\" , \"pasta\/teste_movido.txt\" ); \/\/arquivo teste.txt movido para pasta\/teste_movido.txt;<\/pre>\n<p>&nbsp;<\/p>\n<h3><\/h3>\n<h3>Deletar arquivo:<\/h3>\n<p><strong>win.DeleteArquivo (nome_arquivo ):<\/strong> Muito \u00fatil para apagar arquivos, tome cuidado o processo \u00e9 irrevers\u00edvel, o arquivo n\u00e3o vai para a lixeira, ele \u00e9 apagado definitivamente.<\/p>\n<p>Ex.:<\/p>\n<pre class=\"lang:prisma decode:true\"> inclua'win'\r\nwin.DeleteArquivo('arquivo.txt');<\/pre>\n<p><strong> <\/strong><em><strong>Dica:<\/strong> use o asterisco para apagar v\u00e1rios arquivos de mesma extens\u00e3o, ex.  &#8220;caminho_pasta\/*.ext&#8221; neste caso apagar\u00e1 todos os<\/em><\/p>\n<p><em>arquivos .ext dentro da pasta &#8220;caminho_pasta\/&#8221;;<\/em><\/p>\n<h3><strong> Capturando o identificador de uma janela pelo t\u00edtulo<br \/>\n<\/strong><\/h3>\n<pre class=\"lang:prisma decode:true\"> inclua'win'\r\nid_janela = win.ProcureJanela ( 0 , \"titulo_da_janela\");<\/pre>\n<p>Esta fun\u00e7\u00e3o serve para pegar o id (hwnd em windows.h) de uma janela atrav\u00e9s do texto da barra de t\u00edtulo.<\/p>\n<p>Isto \u00e9 muito \u00fatil para manipular uma janela externa ao programa por meio de seu id.<\/p>\n<p>&nbsp;<\/p>\n<h2>Ativando e desativando uma janela<\/h2>\n<p><strong>win.AtiveJanela ( id_janela , valor ); \/\/ onde valor \u00e9 falso para desativar e verdadeiro para ativar a janela.<\/strong><\/p>\n<p>Ex.: (antes de executar este exemplo abra a calculadora do Windows );<\/p>\n<pre class=\"lang:prisma decode:true\">\/\/pegando o id da janela da calculadora pelo t\u00edtulo:\r\n inclua'win'\r\nid_janela = win.ProcureJanela ( 0 , \"Calculadora\" );\r\n\r\nimprima \"nnA calculadora ira travar, aperte Enter para continuar:nn\";\r\n\r\nleia();\r\n\r\nwin.AtiveJanela( id_janela , falso ); \/\/desativa a janela da calculadora pois o segundo par\u00e2metro \u00e9 o 'falso';\r\n\r\nimprima \"A calculadora ja esta travada, tente fecha-la ou move-la, para ativa-la pressione enter...nn\";\r\nleia();\r\nwin.AtiveJanela ( id_janela , verdadeiro ); \/\/ativa a janela da calculadora;\r\n\r\nimprima \"Calculadora ativada, pode fecha-la agora.nn\"<\/pre>\n<p>&nbsp;<\/p>\n<h2>Testando se uma tecla foi ativada ou desativada<\/h2>\n<p>&nbsp;<\/p>\n<pre class=\"lang:prisma decode:true\">\/\/ obtendo o estado de uma tecla \r\n inclua'win'\r\ntecla  = 20 ; \/\/numero da tecla capslock no teclado\r\n\r\nenquanto 1 inicio \/\/la\u00e7o infinito, para fechar o programa clique no x da janela cmd\r\n\r\n  win.Durma ( 200 ); \/\/parando o programa por 200 milisegundos\r\n  sis.execute( \"cls\"); \/\/executa um comando do sistema operacional, 'cls' limpa tela\r\n \r\n  ret = win.ObtEstadoTecla ( tecla );\r\n \r\n  se ret  == 0 entao imprima   'Capslock desativado'  fim\r\n  se ret  == 1 entao imprima   'Capslock ativado'  fim\r\n\r\nfim\r\n\r\n\/\/observe que mesmo a janela do programa estando sem foco, o comando funciona blz,\r\n\/\/Util para fazer  key loggers.\r\n\/\/engra\u00e7ado que no xp a mensagem ativado so aparece se clicar em outra tecla. No win8 nao acontecia isso<\/pre>\n<p>&nbsp;<\/p>\n<h2>Capturando as teclas digitadas, mesmo se o programa estiver em segundo plano<\/h2>\n<p>&nbsp;<\/p>\n<pre class=\"lang:prisma decode:true\">\/\/funcoes da biblioteca win para se fazer um key logger\r\n\r\n inclua'win'\r\nsis.execute(\"cls\");\r\nimprima('Pressione Esc para sair');\r\nenquanto 1 inicio \/\/inicia um la\u00e7o infinito\r\n\r\n\/\/para usar este exemplo com o igprisma(interface 'igbr') use um temporizador \r\n\/\/com 1 milisegundo de tempo no lugar do enquanto.\r\n\r\n win.Durma( 1 ) ; \/\/para a execu\u00e7\u00e3o durante 1 milisegundo\r\n\r\n para x = 1 , 255 inicio\r\n ret = win.CaptureTecla ( x );\r\n\r\n se ret == win_tecla_pressionada entao \/\/testa de 1 a 255 \r\n \r\n sis.execute(\"cls\");\r\n\r\n imprima ( \"Pressione Esc para sair\");\r\n\r\n \/\/imprimindo o n\u00famero da tecla pressionada e uma poss\u00edvel convers\u00e3o para caractere.\r\n imprima ('o n' .. string.car( 163) .. 'mero ' .. x .. ' ' .. string.car(130) .. ' ' .. string.car( x ) ); \r\n\r\n se x == 27 entao saindo = 'x' quebre fim \/\/ 27 \u00e9 o n\u00famero da tecla ESC \r\n\r\n fim \/\/fim do se\r\n\r\n fim \/\/fim do para\r\n\r\n se saindo == 'x' entao quebre fim\r\nfim \/\/fim do enquanto\r\nsis.execute('cls'); \/\/lembre-se se estiver usando linux no lugar de cls \u00e9 clear ok!\r\npoe'Esc pressionado .... saindo do programa ...\\n\\n'\r\n\r\nwin.Durma( 2000 ); \/\/espera 2 segundos e sai do programa\r\n\r\n\/\/apos a mensagem saindo do programa ...\r\n\/\/usei um loop (la\u00e7o) 'para' imprimindo os 255 numeros em forma de caractere com a fun\u00e7\u00e3o car\r\n\r\npara i = 1 , 255 inicio\r\n imprima ( i .. ' = ' .. car ( i ) );\r\nfim\r\n\r\nleia();<\/pre>\n<pre><\/pre>\n<p>&nbsp;<\/p>\n<h2>Obtendo o T\u00edtulo da janela do cmd e o ambiente de execu\u00e7\u00e3o do programa ( pasta atual ):<\/h2>\n<p>&nbsp;<\/p>\n<pre class=\"lang:prisma decode:true\">\/\/por Adalberto\r\n\/\/obtendo titulo da janela de console( cmd ) , e a pasta corrente. (atual).\r\n inclua'win'\r\ntitulo = win.ObtTituloConsole ( 299 ) ; \/\/ obtendo o titulo (em C uma string de no maximo 299 caracteres;\r\n\r\npasta_atual = win.ObtPastaAtual ( ) ; \/\/sem o parametro tamanho, o padr\u00e3o \u00e9 255;\r\n\r\n\r\n\r\nwin.CaixaMensagem ( nulo , titulo , 'exemplo' , win_mb_Ok  );\r\n\r\nwin.Msg ( nulo , pasta_atual , \"meu diretorio atual\" , win_mb_OkCancelar );\r\n\r\nleia( );<\/pre>\n<p>&nbsp;<\/p>\n<h2>Definindo a pasta atual:<\/h2>\n<pre class=\"lang:prisma decode:true\">\/\/por Adalberto -- definindo a pasta atual ( current directory )\r\n inclua'win'\r\n\r\npasta = win.ObtPastaAtual (); \/\/retorna string da pasta atual\r\n\r\nimprima ('nnPasta Atual: ' .. pasta);\r\n\r\npoe 'Pressione ENTER para continuarn' ;\r\nleia ( );\r\n\r\nmude_dir = win.DefPastaAtual ( pasta .. '\/exemplos\/Win\/' ); \/\/define outra pasta atual\r\n\r\npasta = win.ObtPastaAtual (); \/\/novamente retornando o endereco da pasta atual (j\u00e1 mudada)\r\n\r\nse mude_dir == 1 entao imprima ( 'O novo diretorio atual :n ' .. pasta )\r\nsenaose  mude_dir == 0 entao imprima 'O diretorio atual nao foi modificado'  fim\r\n\r\nexecutearquivo( 'win_usuario.prisma'); \/\/aproveitando para demonstrar como executar um arquivo prisma\r\n\r\n\r\n\r\nleia( ); \/\/aguarda o usu\u00e1rio digitar algo e apertar enter, ou simplesmente pressionar enter.\r\n\r\n\/\/diretorio ou pasta atual \u00e9 o local padr\u00e3o quando voc\u00ea, por exemplo, n\u00e3o quiser passar um\r\n\/\/caminho completo de um arquivo, automaticamente ser\u00e1 o caminho da pasta atual.<\/pre>\n<p>&nbsp;<\/p>\n<h2>Definindo o t\u00edtulo do console do Windows (cmd):<\/h2>\n<p>&nbsp;<\/p>\n<pre class=\"lang:prisma decode:true\">\/\/por Adalberto - Definindo o titulo da janela de console:\r\n inclua'win'\r\nenquanto 1 inicio\r\n\r\n   imprima'digite alguma palavra e aperte enter';\r\n\r\n   titulo = leia( );\r\n\r\n   x = win.DefConsoleTitulo ( titulo ); \/\/a fun\u00e7ao que muda o titulo \u00e9 esta\r\n\r\n  se x == 1 entao\r\n      imprima 'titulo do console foi mudadonn'\r\n  senao\r\n     imprima 'titulo nao foi mudadon' ;\r\n  fim\r\nfim\r\n\r\nleia ( );<\/pre>\n<p>&nbsp;<\/p>\n<p>No exemplo acima compliquei um pouquinho fazendo um la\u00e7o enquanto e atribuindo o texto digitado pelo usu\u00e1rio<\/p>\n<p>como t\u00edtulo do console, mas a fun\u00e7\u00e3o \u00e9 simples como voc\u00ea pode ver: <strong> win.DefConsoleTitulo ( &#8220;string titulo&#8221; ); <\/strong><\/p>\n<p>o retorno pode ser 1 ou 0. Se for zero significa que n\u00e3o deu certo a opera\u00e7\u00e3o, se for 1 teve sucesso na opera\u00e7\u00e3o.<\/p>\n<p>&nbsp;<\/p>\n<h2>Obtendo a posi\u00e7\u00e3o x e y do cursor na tela do computador:<\/h2>\n<pre class=\"lang:prisma decode:true\">\/\/obtendo a posicao do cursor em relacao a tela do pc\r\n inclua'win'\r\npos = win.ObtPosCursor( );\r\n\r\nimprima( pos.x , pos.y );\r\n\r\n\r\npoe('Pressione Enter para continuar...');\r\n\r\nleia();<\/pre>\n<p>Como fui fiel ao windows.h, o x \u00e9 a coluna e o y \u00e9 a linha;<\/p>\n<p>Caso voc\u00ea queira obter apenas a linha use o seguinte modo:<\/p>\n<p><strong>linha = win.ObtenhaPosCursor( ).y <\/strong> ; \/\/observe o ponto e o y no fim da fun\u00e7\u00e3o, se chama acesso direto a um campo de retorno.<\/p>\n<p>para a coluna:<\/p>\n<p><strong>colunaMouse = win.ObtenhaPosCursor( ).x ;<\/strong><\/p>\n<p>\/\/isso pode ser feito com qualquer fun\u00e7\u00e3o que retorna uma tabela, inclusive com a fun\u00e7\u00e3o que retorna data e hora!<\/p>\n<p>&nbsp;<\/p>\n<h2> Definindo a posi\u00e7\u00e3o do cursor na tela:<\/h2>\n<pre class=\"\"> inclua'win'\r\nwin.DefPosCursor(2 , 12 );<\/pre>\n<h2><\/h2>\n<p>&nbsp;<\/p>\n<h2>Obtendo o id da janela em foco:<\/h2>\n<pre class=\"\"> inclua'win'\r\njan_id = win.ObtJanelaEmFoco(); \/\/pega o id da propria janela se estiver ativada<\/pre>\n<h2><\/h2>\n<h2>Obtendo o t\u00edtulo da janela:<\/h2>\n<pre class=\"\"> inclua'win'\r\njan_id = win.ObtJanelaEmFoco(); \/\/pega o id da propria janela se estiver ativada\r\ntitulo = win.ObtJanelaTexto(jan_id); \/\/obtem o titulo da janela obtida pelo id\r\nimprima(titulo); \/\/imprime na tela do dos o resultado;<\/pre>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<h2>Definindo o t\u00edtulo da janela:<\/h2>\n<pre class=\"\"> inclua'win'\r\njan = win.ObtJanelaEmFoco();\r\nwin.DefJanelaTexto( jan , 'novo titulo' );<\/pre>\n<p>&nbsp;<\/p>\n<h2>Fechando a janela:<\/h2>\n<pre class=\"\"> inclua'win'\r\nid = win.ObtJanelaEmFoco(); \/\/obtem o id da propria janela do programa\r\nwin.FecheJanela( id );\r\n\r\n<\/pre>\n<p>&nbsp;<\/p>\n<h2> Tocando sons do sistema e wav&#8217;s:<\/h2>\n<p>baixe o <a title=\"para baixar clique com botao direito em salvar link como\" href=\"http:\/\/linguagemprisma.br4.biz\/prisma_download\/beat.wav\">beat.wav aqui<\/a>, ou use outro de sua prefer\u00eancia.<\/p>\n<pre class=\"\"> inclua'win'\r\ncaminho_som = 'som\/beat.wav' ;\r\nx = win.PlaySom( caminho_som ); \/\/quando so informado o nome do arquivo\r\n \/\/ o padr\u00e3o \u00e9 em modo playback\r\n \/\/ isto significa que o programa continua\r\n \/\/enquanto a musica \u00e9 tocada em fundo\r\n\r\nse x entao imprima'som tocando com sucesso!'\r\nsenao\r\n imprima'erro n\u00e3o foi poss\u00edvel tocar o som'\r\nfim\r\n\r\nsis.execute('pause');\r\n\r\n\r\n\/\/tocando um som do sistema\r\n\r\nimprima'\\n\\ntocando o som de inicializacao do sistema' \r\n\r\nwin.PlaySom( \"SystemStart\", SOM_ALIAS); \/\/ toca o som de abertura do windows.\r\n\r\n\r\n\r\n\/\/tocando um som de evento do win.ini keys\r\n\r\nimprima'\\n\\ntocando o sons de evento do win'\r\n\r\n\r\nimprima'\\nHand:';\r\nwin.PlaySom( \"SystemHand\", SOM_NODEFAULT);\r\nimprima'\\nExit:';\r\nwin.PlaySom(\"SystemExit\", SOM_NODEFAULT);\r\nimprima'\\nExclamation:';\r\nwin.PlaySom( \"SystemExclamation\", SOM_NODEFAULT);\r\nimprima'\\nAsterisk:\\n\\n';\r\nwin.PlaySom( \"SystemAsterisk\", SOM_NODEFAULT);\r\n\r\nsis.execute('pause');\r\n\r\n<\/pre>\n<p>&nbsp;<\/p>\n<h2>Caixa de mensagem:<\/h2>\n<pre class=\"\">\/\/ by Adalberto\r\n\r\n\/\/ example of message box\r\n inclua'win'\r\nrepita \/\/comando repita , repete os comandos que estao entre ele e a condicao 'ate'\r\n\r\n\/\/simples\r\n\r\nret = win.CaixaMensagem( nulo , 'o texto da mensagem aqui', 'o titulo', win_mb_Ok );\r\nse ret == win_mb_ret_Ok entao \r\n imprima('foi pressionado o botao ok')\r\nsenao \r\n imprima'fechar' \r\nfim\r\n\r\n\/\/with more buttons\r\nret = win.CaixaMensagem( nulo , 'o texto da mensagem aqui', 'o titulo', win_mb_OkCancelar );\r\nse ret == win_mb_ret_Ok entao\r\n imprima 'ok'\r\nsenaose ret == win_mb_ret_Cancelar entao\r\n imprima 'cancelar'\r\nsenao\r\n imprima'fechar'\r\nfim\r\n\r\n\/\/mais botoes e icones\r\nret = win.CaixaMensagem( nulo , 'o texto da mensagem aqui', 'o titulo', \r\n bit32.bor( win_mb_SimNaoCancelar , win_mb_IconeQuestao ) \/\/quando \u00e9 mais de um botao devemos usar a funcao bit or para aceitar varios botoes ou icones de uma so vez\r\n );\r\nse ret == win_mb_ret_Sim entao \r\n imprima 'sim';\r\nsenaose ret == win_mb_ret_Nao entao\r\n imprima 'Nao' ;\r\nsenaose ret == win_mb_ret_Cancelar entao\r\n imprima 'cancelar'\r\nfim\r\n\r\n\r\n\r\n\/\/mais botoes e icones\r\n\r\nret = win.CaixaMensagem ( nulo , 'o texto da mensagem aqui', 'o titulo', \r\n bit32.bor ( win_mb_AnularRepetirIgnorar , \/\/botao abortar, Tentar Novamente e Ignorar\r\n win_mb_IconeAsterisco )\r\n );\r\n\r\n \r\nse ret == win_mb_ret_Anular entao \/\/em alguns casos o botao aparecera com o label 'anular' ao inves de 'abortar', o resultado \u00e9 o mesmo!\r\n imprima 'Anulado' \r\nsenaose ret == win_mb_ret_Repetir entao \r\n imprima 'Repetir'\r\nsenaose ret == win_mb_ret_Ignorar entao \r\n imprima 'ignorado'\r\nfim\r\n\r\nate ret == win_mb_ret_Anular ; \/\/repete ate que ret seja o retorno de um botao abortar da mensagem\r\n\r\nes.leia(); \/\/\/aguarda uma tecla ser pressionada pelo usuario<\/pre>\n<p>Veja outros argumentos que voc\u00ea pode usar:<\/p>\n<h2>\/**<br \/>\n<strong>alguns botoes de mensagem:<\/strong><br \/>\nwin_mb_Ok<\/h2>\n<p>win_mb_OkCancelar<\/p>\n<p>win_mb_AnularRepetirIgnorar<\/p>\n<p>win_mb_Applmodal<\/p>\n<p>win_mb_Combinar<\/p>\n<p>win_mb_cur_max<\/p>\n<p>win_mb_SimNao<\/p>\n<p>win_mb_SimNaoCancelar<\/p>\n<h2><strong>Alguns icones:<\/strong><\/h2>\n<p>win_mb_IconeInformacao<\/p>\n<p>win_mb_IconeAsterisco<\/p>\n<p>win_mb_IconeErro<\/p>\n<p>win_mb_IconeExclamacao<\/p>\n<p>win_mb_IconeMao<\/p>\n<p>win_mb_IconeMascara<\/p>\n<p>win_mb_IconeQuestao<br \/>\nwin_mb_IconePare<\/p>\n<p>win_mb_IconeAdvertencia<\/p>\n<h2><strong> Alguns retornos de botoes:<\/strong><\/h2>\n<h2>s\u00e3o variaveis de numeros, bastando descobrir o numero nem<br \/>\nprecisa usar o nome do retorno, exemplo: Anular = 3;<\/h2>\n<p>win_mb_ret_Sim<\/p>\n<p>win_mb_ret_Nao<\/p>\n<p>win_mb_ret_Ok<\/p>\n<p>win_mb_ret_Cancelar<\/p>\n<p>win_mb_ret_Abortar = Anular<\/p>\n<p>win_mb_ret_Anular<\/p>\n<p>win_mb_ret_TentarNovamente = Repetir<\/p>\n<p>win_mb_ret_Repetir<\/p>\n<p>win_mb_ret_Ignorar<br \/>\n**<\/p>\n<h2>Resolu\u00e7\u00e3o da tela:<\/h2>\n<pre class=\"\"> inclua'win'\r\nx = win.DefResolucao( 1024 , 768) \/\/muda a resolucao da tela\r\n\r\nse x == 1 entao imprima '\\n\\nResolucao alterada com sucesso\\nAguardando 3 segundos para voltar ao normal\\n\\n' \r\nsenao \r\n\r\n imprima ( 'Houve um erro Resolucao nao alterada')\r\n se x == -1 entao imprima '\\nconfiguracao do display indisponivel\\n'\r\n senaose x== -2 entao imprima '\\nResolucao invalida para este monitor\\n'\r\n fim\r\nfim\r\n\r\nwin.Durma( 3000 ) ; \/\/aguarda 3 segundos\r\n\r\nwin.DefResolucaoPadrao (); \/\/ volta ao normal a tela\r\n\r\nsis.execute ( 'pause');\r\n\r\n\r\n\/\/ tente aprimorar este programa fazendo uma interface grafica para ele\r\n\/\/ pode usar botoes para cada resolucao ... ou um combo<\/pre>\n<h2><\/h2>\n<h2>Obtendo a resolu\u00e7\u00e3o (altura e largura) da tela:<\/h2>\n<p>&nbsp;<\/p>\n<p>Passando o par\u00e2metro que especifica se \u00e9 altura ou largura (res_altura \/ res_largura):<\/p>\n<pre class=\"lang:prisma decode:true\"> inclua'win'\r\naltura = win.ObtResolucao(res_altura);\r\n\r\nlargura = win.ObtResolucao( res_largura);\r\n\r\nimprima( \"sua tela = \" , largura .. \" x \" .. altura )\r\n\r\n<\/pre>\n<p>Sem especificar altura ou largura ( o retorno \u00e9 duplo):<\/p>\n<pre class=\"lang:prisma decode:true\"> inclua'win'\r\nalt , larg = win.ObtResolucao();\r\n\r\nimprima( alt , larg );<\/pre>\n<p>&nbsp;<\/p>\n<h2><a title=\"baixar Prisma\" href=\"https:\/\/linguagemprisma.br4.biz\/blog\/linguagemprisma-netdownload\/\" target=\"_blank\">(baixe prisma vers\u00e3o 1.0.9 ) aqui<\/a><\/h2>\n<h2> Minimizando, maximizando, ocultando e mostrando uma janela:<\/h2>\n<p>comando:   win.MostreJanela ( id_da_janela , sw_modo );<\/p>\n<pre class=\"\"> inclua'win'\r\n\/\/abra a calculadora do windows antes de executar\r\nid = win.ProcureJanela(0,\"Calculadora\") ; \/\/pegando o id da calculadora pelo titulo.\r\n\/\/ocultando\r\nimprima'calculadora ocultada, pressione enter para aparecer';\r\nwin.MostreJanela( id , sw_oculte );\r\n\r\nleia(); \/\/aguarda pressionar enter;\r\n\r\nwin.MostreJanela( id , sw_mostrenormal ); \/\/e a calculadora reaparece\r\n\r\n<\/pre>\n<h2>veja outros modos:<\/h2>\n<pre class=\"lang:prisma decode:true \">\"sw_oculte \/\/\/  (oculta a janela)\r\n\r\nsw_mostre  \/\/\/(mostra a janela \/nao funciona apos minimizar)\r\n\r\nsw_maximize \/\/\/(maximiza)\r\n\r\nsw_minimize  \/\/\/(minimiza)\r\n\r\nsw_forceminimize;  \/\/\/minimiza for\u00e7ado, deve ser utilizado sempre com janela em outro processo.\r\n\r\nsw_restaure ; \/\/\/ restaura ativando a janela em tamanho original\r\n\r\nsw_mostrepadrao ; \/\/\/ Define o estado mostra com base no valor SW_ especificado na estrutura STARTUPINFO passado para a fun\u00e7\u00e3o CreateProcess pelo programa que iniciou o aplicativo.\r\n\r\nsw_mostremaximizado \/\/ ativa a janela e mostra maximizado\r\n\r\nsw_mostreminimizado; \/\/\/ativa a janela e mostra minimizado;\r\n\r\nsw_mostreminnaoativo \/\/\/mostra minimizado nao ativado\r\n\r\nsw_mostrena \/\/\/mostra a janela no modo atual anterior mas nao ativado\r\n\r\nsw_mostrenaoativo  \/\/\/mostra a janela no tamanho e posi\u00e7\u00e3o mais recente, por\u00e9m n\u00e3o ativada\r\n\r\nsw_mostrenormal; \/\/\/ ativa e mostra a janela na posi\u00e7\u00e3o padr\u00e3o dela.<\/pre>\n<p>&nbsp;<\/p>\n<h2><span style=\"color: #800000;\"><strong>(Novidades! A partir daqui baixe Prisma: 12\/10\/2015 ou mais recente.)<\/strong><\/span><\/h2>\n<h1>A partir desta vers\u00e3o \u00e9 necess\u00e1rio incluir a biblioteca win. Veja:<\/h1>\n<pre class=\"lang:prisma decode:true\">inclua'win'; \/\/s\u00f3 isso!<\/pre>\n<h3><\/h3>\n<h3 style=\"text-align: center;\">win.Execute(&#8230;);<\/h3>\n<p>&nbsp;<\/p>\n<p><a href=\"https:\/\/linguagemprisma.br4.biz\/blog\/wp-content\/uploads\/2015\/01\/win_execute.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-1442 aligncenter\" src=\"https:\/\/linguagemprisma.br4.biz\/blog\/wp-content\/uploads\/2015\/01\/win_execute-300x195.png\" alt=\"win_execute\" width=\"293\" height=\"190\" srcset=\"https:\/\/linguagemprisma.br4.biz\/blog\/wp-content\/uploads\/2015\/01\/win_execute-300x195.png 300w, https:\/\/linguagemprisma.br4.biz\/blog\/wp-content\/uploads\/2015\/01\/win_execute.png 771w\" sizes=\"auto, (max-width: 293px) 100vw, 293px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<h3>Executa programas ou arquivos a partir de seu programa Prisma:<\/h3>\n<pre class=\"lang:prisma decode:true\">inclua'win'; \r\n\/\/ a partir da vers\u00e3o Prisma-1.0.94 win \u00e9 separada de prisma\r\n\/\/sendo necess\u00e1rio inclu\u00ed-la.\r\n\r\n\/\/chamando a calculadora no diret\u00f3rio C:\\:\r\n\r\nwin.poe(conv_w'Vamos abrir a calculadora a partir do diret\u00f3rio C:\\\\\\n\\n clique ok');\r\nwin.Execute(nulo , 'open' , 'calc' , '' , 'C:\\\\' );\r\n\/\/note que foi omitido o \u00faltimo par\u00e2metro, o padr\u00e3o \u00e9 sw_mostre(mostra a janela normal);\r\n\r\nwin.poe(conv_w[[Abrindo a pasta C:\\Prisma\\1.0\\bin\\:\r\n\r\n clique ok]]);\r\n\r\n\r\n\/\/abrindo a pasta C:\\Prisma\\1.0\\bin\\:\r\nwin.Execute(nulo,'explore' , 'C:\\\\Prisma\\\\1.0\\\\bin\\\\', '' , '', sw_maximize );\r\n\r\nwin.poe(conv_w[[abrindo um site com navegador padr\u00e3o:\r\n\r\n clique ok]]);\r\n\/\/abrindo um site com navegador padr\u00e3o:\r\nwin.Execute(nulo,nulo,'www.linguagemprisma.br4.biz\/blog' , '', '' , sw_maximize );\r\n\/\/note que o segundo par\u00e2metro foi omitido, nulo no lugar de algum valor, o padr\u00e3o \u00e9 'open' (abrir);\r\n\r\n\r\nwin.poe(conv_w[[\r\nexecutando um programa com par\u00e2metros:\r\n\r\n clique ok]]);\r\n\/\/executando um programa com parametros:\r\nwin.Execute(nulo, \/\/hwnd de uma janela\r\n            '' , \/\/modo; aqui foi omitido com aspas vazias, o padr\u00e3o \u00e9 abrir o alvo.\r\n            'C:\\\\Prisma\\\\1.0\\\\bin\\\\prismacod.pbrexe' , \/\/arquivo ou programa a ser aberto(alvo)\r\n            'teste.prisma' , \/\/parametros\r\n            '.' ,           \/\/diret\u00f3rio de execu\u00e7\u00e3o (ponto indica a pasta atual) \r\n            sw_maximize \/\/ visual =&gt; maximizado\r\n);\r\n\r\n\r\nwin.poe(conv_w[[\r\nabrindo o wordpad com pedido de permiss\u00e3o de privil\u00e9gios\r\n\r\n clique ok]]);\r\n\r\n\/\/abrindo o wordpad com pedido de permiss\u00e3o de privil\u00e9gios\r\nwin.Execute( nulo , 'runas', 'wordpad' , '' , '.' , sw_maximize );\r\n\r\n\r\nwin.poe(conv_w[[\r\n\r\n\r\n    P   R   I   S   M   A\r\n        \r\n  .............FIM.................\r\n\r\n   Clique ok para sair!\r\n\r\n       ]]);\r\n\r\n<\/pre>\n<p><strong>DETALHES:<\/strong><\/p>\n<p>Sintaxe: win.Execute( id , modo, alvo , param , diretorio , visual );  em que:<\/p>\n<p>id = nulo ou o hwnd de uma janela.<\/p>\n<p>modo &#8211; \u00e9 uma string que indica a forma de chamar o alvo. Veja abaixo as op\u00e7\u00f5es de modos:<\/p>\n<ul>\n<li>&#8220;&#8221; ou nulo &#8211; string vazia ou nulo &#8211; apenas chama o alvo.<\/li>\n<li>&#8220;edit&#8221; &#8211; chama um arquivo de texto para ser editado em seu programa padr\u00e3o, ex. *.prisma abre com prismacod<\/li>\n<li>&#8220;open&#8221; &#8211; chama qualquer documento e o abre com seu programa padr\u00e3o. Menos os da modalidade &#8220;edit&#8221;<\/li>\n<li>&#8220;runas&#8221; &#8211; executa um programa *.exe pedindo permiss\u00e3o de privil\u00e9gio administrador.<\/li>\n<li>&#8220;explore&#8221; &#8211; abre o explorador de arquivos, na pasta indicada em alvo.<\/li>\n<li>&#8220;find&#8221; &#8211; abre uma p\u00e1gina de pesquisa de arquivos na pasta indicada em alvo.<\/li>\n<li>&#8220;print&#8221; &#8211; imprime o arquivo indicado em alvo.<\/li>\n<\/ul>\n<p>alvo = \u00e9 o arquivo, endere\u00e7o, ou diret\u00f3rio a ser executado. (Lembre-se que &#8220;.&#8221; significa diret\u00f3rio atual)<\/p>\n<p>param = s\u00e3o os par\u00e2metros passados para o alvo. Deixe espa\u00e7o entre os par\u00e2metros. Ex.: &#8221; -o file.out file.in -std=c99 &#8221;<\/p>\n<p>diretorio = string que indica a pasta onde ser\u00e1 o ambiente de execu\u00e7\u00e3o. Geralmente na mesma pasta do arquivo a ser aberto.<\/p>\n<p>visual = Vari\u00e1vel predefinida em win que indica se o arquivo ou programa ser\u00e1 aberto minimizado, maximizado, normal, oculto etc. Sempre inicia com sw_ (Show_Window); Eis algumas delas a seguir:<\/p>\n<ul>\n<li>sw_minimize , sw_mostre , sw_maximize , sw_oculte;<\/li>\n<\/ul>\n<hr \/>\n<p>&nbsp;<\/p>\n<h2 style=\"text-align: center;\"><strong>win.poe(string)<\/strong><\/h2>\n<p>&nbsp;<\/p>\n<p><a href=\"https:\/\/linguagemprisma.br4.biz\/blog\/wp-content\/uploads\/2015\/01\/win_poe1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-1444 aligncenter\" src=\"https:\/\/linguagemprisma.br4.biz\/blog\/wp-content\/uploads\/2015\/01\/win_poe1.png\" alt=\"win_poe\" width=\"267\" height=\"167\" \/><\/a><\/p>\n<p>Emite uma mensagem de alerta com bot\u00e3o ok. Sintaxe: win.poe(&#8220;string&#8221;). Muito simples n\u00e3o possui t\u00edtulo a mensagem.<\/p>\n<p><em>(Pensei em dar o nome do comando win.Alerte, mas, por quest\u00e3o de simplicidade e menos letras, escolhi win.poe mesmo.  Acho que um dos \u00fanicos comandos com inicial min\u00fascula da biblioteca win. \/\/ poe vem de<strong> p\u00f5e<\/strong>, ou seja, <strong>coloque<\/strong> o resultado na tela,<strong> exiba<\/strong> etc.)<\/em><\/p>\n<p>O par\u00e2metro string pode ser qualquer string v\u00e1lida. Ex.:<\/p>\n<pre class=\"lang:prisma decode:true\">inclua 'win'\r\n\r\nwin.poe(\"Clique em OK para continuar\");\r\n\r\n<\/pre>\n<p>&nbsp;<\/p>\n<hr \/>\n<p>&nbsp;<\/p>\n<h1 style=\"text-align: center;\">win.CriePasta(&#8216;string&#8217;)<\/h1>\n<p>Cria um diret\u00f3rio vazio. O argumento deve ser uma string v\u00e1lida.<\/p>\n<p>Voc\u00ea pode passar um caminho completo como:  &#8220;C:\\\\Caminho\\\\nomePasta&#8221;<\/p>\n<p>ou o nome da pasta apenas: &#8220;NomePasta&#8221;. Neste caso o destino ser\u00e1 a pasta atual do programa sendo executado.<\/p>\n<pre class=\"lang:prisma decode:true\">inclua'win'\r\nwin.CriePasta(\"ZZ_PASTA\");\r\nwin.poe( win.ObtErroMsg()  );\r\n<\/pre>\n<hr \/>\n<h1 style=\"text-align: center;\">win.ObtErroMsg( )<\/h1>\n<p>Retorna uma string com a mensagem do \u00faltimo erro ou sucesso at\u00e9 o momento de sua chamada. A sa\u00edda vai ser de acordo com o idioma definido pelo usu\u00e1rio. Ex.:<\/p>\n<pre class=\"lang:prisma decode:true\">inclua 'win'\r\nwin.CopieArquivo('xxx' , 'yyyy');\r\nwin.poe( win.ObtErroMsg() ); \/\/ser\u00e1 o erro de arquivo n\u00e3o encontrado.\r\n<\/pre>\n<p><a href=\"https:\/\/linguagemprisma.br4.biz\/blog\/wp-content\/uploads\/2015\/01\/UltimoErroMsg.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-1452 aligncenter\" src=\"https:\/\/linguagemprisma.br4.biz\/blog\/wp-content\/uploads\/2015\/01\/UltimoErroMsg-300x124.png\" alt=\"UltimoErroMsg\" width=\"300\" height=\"124\" srcset=\"https:\/\/linguagemprisma.br4.biz\/blog\/wp-content\/uploads\/2015\/01\/UltimoErroMsg-300x124.png 300w, https:\/\/linguagemprisma.br4.biz\/blog\/wp-content\/uploads\/2015\/01\/UltimoErroMsg.png 395w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>Obs. que a mensagem j\u00e1 vem codificada para conv_w, mostra acentos no modo gr\u00e1fico win32, e n\u00e3o para conv_c que mostra acentos no modo console (cmd\/dos).<\/p>\n<p>Caso voc\u00ea queira imprimir no cmd com acentos ter\u00e1 que reverter a string e depois converter para conv_c assim:<\/p>\n<pre class=\"lang:prisma decode:true \">s = desconv_w( win.ObtErroMsg() ); \/\/reverte a string do modo conv_w para o modo normal\r\nimprima(  conv_c(s) ); \/\/converte do modo normal para o modo console(conv_c), mostra acentos no cmd(tela preta)<\/pre>\n<p>&nbsp;<\/p>\n<hr \/>\n<h1 style=\"text-align: center;\">string_c = conv_c ( &#8220;string&#8221;)<\/h1>\n<p>Faz com que uma string seja mostrada com acento no cmd, tela preta de comandos.<\/p>\n<p>Exemplo:<\/p>\n<pre class=\"lang:prisma decode:true\">inclua'win'\r\nstr = \"Ol\u00e1 mundo em Prisma, c\u00e9u, voc\u00ea, ma\u00e7\u00e3 etc.\";\r\nimprima( \"Sem converter:\", str );\r\n\r\nimprima( \"Convertido:\" , conv_c(str) );\r\nwin.poe\"terminado, clique em ok\";\r\n<\/pre>\n<p>Note que apesar dessa fun\u00e7\u00e3o n\u00e3o iniciar com win. \u00e9 necess\u00e1rio incluir a biblioteca win onde ela est\u00e1 declarada.<\/p>\n<p>Obs. Caso queira reverter o processo, use  <strong>str = desconv_c( str_c );<\/strong><\/p>\n<p>Sa\u00edda:<\/p>\n<p><a href=\"https:\/\/linguagemprisma.br4.biz\/blog\/wp-content\/uploads\/2015\/01\/conv_c.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-1446\" src=\"https:\/\/linguagemprisma.br4.biz\/blog\/wp-content\/uploads\/2015\/01\/conv_c-300x167.png\" alt=\"conv_c\" width=\"300\" height=\"167\" srcset=\"https:\/\/linguagemprisma.br4.biz\/blog\/wp-content\/uploads\/2015\/01\/conv_c-300x167.png 300w, https:\/\/linguagemprisma.br4.biz\/blog\/wp-content\/uploads\/2015\/01\/conv_c.png 565w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<hr \/>\n<h1 style=\"text-align: center;\">str_w = conv_w(&#8216;str&#8217;)<\/h1>\n<p>Faz com que strings com acentos sejam exibidas normalmente no modo gr\u00e1fico (_w = win32); Em mensagens, t\u00edtulos de janela etc. Somente em fun\u00e7\u00f5es da lib win, o ig n\u00e3o precisa pois o gtk j\u00e1 \u00e9 preparado para utf8.<\/p>\n<p>ex.:<\/p>\n<pre class=\"lang:prisma decode:true\">inclua'win';\r\nstr = '\u00e9 ol\u00e1 voc\u00ea ma\u00e7\u00e3 etc'\r\nwin.poe(str); \/\/a letra com acento sai errada\r\nwin.poe( conv_w(str) ); \/\/sai com acento.<\/pre>\n<p>1:                                                                                                          2:<\/p>\n<p><a href=\"https:\/\/linguagemprisma.br4.biz\/blog\/wp-content\/uploads\/2015\/01\/conv_w1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1447\" src=\"https:\/\/linguagemprisma.br4.biz\/blog\/wp-content\/uploads\/2015\/01\/conv_w1.png\" alt=\"conv_w1\" width=\"255\" height=\"162\" \/>      <\/a><a href=\"https:\/\/linguagemprisma.br4.biz\/blog\/wp-content\/uploads\/2015\/01\/conv_w2.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1448\" src=\"https:\/\/linguagemprisma.br4.biz\/blog\/wp-content\/uploads\/2015\/01\/conv_w2.png\" alt=\"conv_w2\" width=\"215\" height=\"163\" \/><\/a><\/p>\n<p>Caso voc\u00ea obtenha uma str no modo conv_w e queira reverter para o modo normal use:str = desconv_w(str_w);<\/p>\n<p><a href=\"https:\/\/linguagemprisma.br4.biz\/blog\/wp-content\/uploads\/2015\/08\/logo_prisma148.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-1237 aligncenter\" src=\"https:\/\/linguagemprisma.br4.biz\/blog\/wp-content\/uploads\/2015\/08\/logo_prisma148.png\" alt=\"logo_prisma148\" width=\"256\" height=\"171\" \/><\/a><\/p>\n<h1><\/h1>\n<h1 style=\"text-align: center;\"><span style=\"color: #0000ff;\"><strong>Continua&#8230; (fun\u00e7\u00f5es do registro em breve)<\/strong><\/span><\/h1>\n<h3 style=\"text-align: center;\"><span style=\"color: #0000ff;\"><em>linguagemprisma@gmail.com<\/em><\/span><\/h3>\n<p>Att. Adalberto<\/p>\n","protected":false},"excerpt":{"rendered":"<p>&nbsp; &nbsp; &nbsp; Ol\u00e1 a todos, quero fazer aqui uma s\u00e9rie de receitas prontas exemplificando diversos recursos \u00fateis da lib win que faz parte do conjunto nativo de bibliotecas de fun\u00e7\u00f5es de Prisma. Nela vamos encontrar algumas fun\u00e7\u00f5es realmente importantes, como obter Pasta e nome do usu\u00e1rio, pasta system32, data, eventos como pressionar de tecla,&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"open","ping_status":"open","template":"tpl-full-width.php","meta":{"footnotes":""},"class_list":["post-358","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/pages\/358","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/types\/page"}],"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=358"}],"version-history":[{"count":27,"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/pages\/358\/revisions"}],"predecessor-version":[{"id":2503,"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/pages\/358\/revisions\/2503"}],"wp:attachment":[{"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/media?parent=358"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}