Executando funcionalidades no S.O. com ShellExecute, WaitRun e WinExec – Maratona AdvPL e TL++ 444

Nesse vídeo demonstraremos a utilização das funções ShellExecute, WaitRun e WinExec, que servem para executar recursos e funções no Sistema Operacional.

Abaixo o código fonte desenvolvido para o exemplo em vídeo acima:

//Bibliotecas
#Include "Totvs.ch"

/*/{Protheus.doc} User Function zExe444
Executa comandos e programas no Sistema Operacional que esta rodando o SmartClient
@type Function
@author Atilio
@since 31/03/2023
@see https://tdn.totvs.com/display/tec/ShellExecute e https://tdn.totvs.com/display/tec/WaitRun e https://tdn.totvs.com/display/tec/WinExec
@obs 

    Função ShellExecute
    Parâmetros
        + cAcao        , Caractere     , Indica o tipo de ação a ser executada (como OPEN para abrir)
        + cArquivo     , Caractere     , Indica o nome do aplicativo ou arquivo
        + cParam       , Caractere     , Indica se deve passar parâmetros de execução (para caso usar aplicativo)
        + cDirTrabalho , Caractere     , Indica a pasta que contém o cArquivo
        + nOpc         , Numérico      , Indica o tipo de abertura (normal; minimizada; maximizada; etc)
    Retorno
        + nRet       , Numérico      , Se for bem sucedida retorna um valor maior que 32

    Função WaitRun
    Parâmetros
        + cExeName   , Caractere     , Indica o aplicativo a ser executado ou arquivo a ser aberto
        + nShow      , Numérico      , Indica o tipo de abertura (normal; minimizada; maximizada; etc)
    Retorno
        + nRet       , Numérico      , Retorna 0 em caso de sucesso

    Função WinExec
    Parâmetros
        + cExec      , Caractere     , Indica o aplicativo a ser executado
    Retorno
        + cRet       , Caractere     , Retorna "0" em caso de sucesso

    **** Apoie nosso projeto, se inscreva em https://www.youtube.com/TerminalDeInformacao ****
/*/

User Function zExe444()
	Local aArea     := FWGetArea()
    Local cExecute  := ""
    Local cArquivo  := ""
    Local cComando  := ""
    Local cPrograma := ""

    //Abrindo uma janela com novo email no Outlook via ShellExecute
    cExecute := "/c ipm.note /m  teste@empresa.com " 
    ShellExecute("OPEN", "outlook.exe", cExecute, "", 1)

    //Criando um arquivo .bat e depois execuntado via WaitRun
    cArquivo  := 'C:\spool\teste.bat'
    cComando  := 'getmac > "C:\spool\mac_address.txt"'
    MemoWrite(cArquivo, cComando)
    WaitRun(cArquivo, 2)

    //Acionando um programa do Windows para abrir via WinExec
    cPrograma := "notepad.exe"
    WinExec(cPrograma)

	FWRestArea(aArea)
Return

Bom pessoal, por hoje é só.

Abraços e até a próxima.

Dan (Daniel Atilio)
Cristão de ramificação protestante. Especialista em Engenharia de Software pela FIB, graduado em Banco de Dados pela FATEC Bauru e técnico em informática pelo CTI da Unesp. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor e mantenedor do portal Terminal de Informação.

Deixe uma resposta

Terminal de Informação