Boa tarde Raphael!
Não sei se é a melhor prática, mas usamos isso para desabilitar a troca de configurações na impressão do Danfe, no ponto de entrada spNfeSetup
Ele recebe por padrão um objeto setup da FwMsPrinter:
// Configuração do que pode ser alterado
nFlags := PD_ISTOTVSPRINTER + PD_DISABLEPAPERSIZE + PD_DISABLEPREVIEW + PD_DISABLEMARGIN + PD_DISABLEORIENTATION + PD_DISABLEDESTINATION
oDanfe := FWMSPrinter():New("DANFE", IMP_SPOOL)
oDanfe:Setup()
// Sempre imprime local
oSetup:SetPropert(PD_DESTINATION,2)
// Desabilita, para não permitir que altere
oSetup:oCtlDestination:oMainPanel:lReadOnly := .T.
// Sempre imprime retrato
oSetup:SetPropert(PD_ORIENTATION,1)
// Desabilita, para não permitir que altere
oSetup:oCtlOrientation:oMainPanel:lReadOnly := .T.
// Força a configuração que estava salva no perfil do usuário
oSetup:SetPropert(PD_PRINTTYPE,nPrintType)
oSetup:oCtlType:oMainPanel:lReadOnly := .T.
// Sempre gera no diretório de instalação do protheus no client, na pasta danfe
oSetup:aOptions[PD_VALUETYPE] := Alltrim(GetMv("PAP_IPROTH")) + "\danfe\"
// Desabilita, para não permitir que altere
oSetup:nFlags := nFlags
Espero que te ajude!