sexta-feira, 30 de setembro de 2016

Debug #12 - Executar arquivo externo em ADVPL


Fala galera!


Esses dias precisei fazer uma modificação no sistema no qual efetuaria um sinal sonoro para alertar o usuário sobre alguma entrada incorreta de dados. 


O problema principal é: a cada notificação de erro ou dados inválidos o sistema irá emitir um som que alertará o usuário que algo está errado.

Primeiramente vamos criar uma função de usuário simples com o nome alarme() e seu retorno será uma variável - lRet - do tipo booleano. Caso alguma inconsistência seja encontrada o alerta será emitido.

user function alarme

local lRet := .T.
local nQtd := 3
local cDirCli := "C:\\Media\\"

if nQtd = 3
 shellExecute("Open", cDirCli+"sound.bat", "", "", 0) 
 msgInfo("Qtd = 3")
else
 shellExecute("Open", cDirCli+"sound_2.bat", "", "", 0)
 msgInfo("Qtd <> 3")
 lRet := .F.
endIf

return lRet

Além da variável de retorno e outra variável de teste (nQtd), temos uma variável que nos mostra o diretório onde se encontra os arquivos de áudio que usaremos em nossa rotina.

Utilizaremos o método shellExecute() para que possamos chamar nosso arquivo .bat que ficará responsável por abrir e executar o áudio.

Vejamos nosso arquivo .bat:

start wmplayer /play /close c:\Media\sound136.wav 
timeout /t 1
TASKKILL /IM wmplayer.exe


Na primeira linha temos o comando start que inicia o player wmplayer - em nosso caso será o windows media player - então usamos os comandos /play e /close e informamos o diretório do arquivo de áudio a ser executado.

Usei também o comando timeout com o tempo (/t) de 1 segundo. Após esse tempo o comando TASKKILL irá encerrar a tarefa do windows media player.

É isso ai galera! Espero que tenho curtido essa dica.

Até mais!

;)
Renan Rodrigues Ramos Desenvolvedor

Sou desenvolvedor, amo desenvolvimento de software, músico e apaixonado por filmes e seriados.