Olá pessoal…
Hoje vou mostrar como executar um programa na abertura do SmartClient com a opção de mostrar ou não a tela de Login para o usuário entrar no sistema.
A utilidade de desenvolver esse recurso, é fazer com que os usuários não consigam alterar parâmetros de Módulo, nem acessar outras rotinas, será mostrado dois exemplos, ambos executam a rotina MATA010 (Cadastro de Produtos).
Antes de mais nada, após compilar, para executar, basta chamar o U_ e o nome da rotina, conforme print abaixo.
No primeiro exemplo (u_zInicio1), basicamente é aberto o cadastro de produtos, utilizando o tema SUNSET (vermelho) e não é mostrado a tela de login (é utilizado o RPCSetEnv para setar a Empresa 99 e a Filial 01).
No segundo exemplo (u_zInicio2), é mostrado a tela de Login para ser informado o usuário e senha, utilizando o tema OCEAN (azul) e em seguida já é aberto o cadastro de Produtos.
Abaixo o código fonte utilizado.
/*/{Protheus.doc} zInicio1
Função executada no Programa Inicial, sem precisar usuário e senha
@type function
@author Atilio
@since 03/10/2016
@version 1.0
@example
u_zInicio1()
/*/
User Function zInicio1()
//Cria o MsApp
MsApp():New('SIGATST')
oApp:CreateEnv()
//Seta o tema do Protheus (SUNSET = Vermelho; OCEAN = Azul)
PtSetTheme("SUNSET")
//Define o programa de inicialização
oApp:bMainInit:= {|| MsgRun("Configurando ambiente...","Aguarde...",;
{|| RpcSetEnv("99","01"), }),;
MATA010(),;
Final("TERMINO NORMAL")}
//Seta Atributos
__lInternet := .T.
lMsFinalAuto := .F.
oApp:lMessageBar:= .T.
oApp:cModDesc:= 'SIGATST'
//Inicia a Janela
oApp:Activate()
Return Nil
/*/{Protheus.doc} zInicio2
Função executada no Programa Inicial, utilizando login
@type function
@author Atilio
@since 03/10/2016
@version 1.0
@example
u_zInicio2()
/*/
User Function zInicio2()
//Cria o MsApp
MsApp():New('SIGACOM')
oApp:CreateEnv()
//Seta o tema do Protheus (SUNSET = Vermelho; OCEAN = Azul)
PtSetTheme("OCEAN")
//Define o programa que será executado após o login
oApp:cStartProg := 'MATA010'
//Seta Atributos
__lInternet := .T.
//Inicia a Janela
oApp:Activate()
Return Nil
Bom pessoal, por hoje é só.
Abraços e até a próxima.



Boa Tarde Dan, tentei implementar o código e dá o seguinte erro:
ERROR: argument #2 error, expected B->A
Bom dia William, tudo joia?
Pode ser que algum recurso tenha sido alterado ou descontinuado desde esse exemplo de 2016 (9 anos atrás, no print ainda era Protheus 11).
Se possível, poste o error log completo ou a trace do stack para ver onde está originando o erro.
Tenha uma ótima e abençoada quinta feira.
Um forte abraço.