Ainda não encontrei no código a chamada a DLL...
Aqui você faz a concatenação dos parâmetros em uma string única:
ArqCte := ["] + (DbCTE)->CTECHAV + ["] + "," + ["] +ALLTRIM(wMOTIVO) + ["]+ "," + ["] +pCGC + ["]
Depois é chamada a função/método cancelar, informando apenas um parâmetro que é a string concatenada:
MsgRun("Por favor, aguarde... Estou trabalhando para: "+cMsg+" - CTe: "+cCT,,{|oWnd| lRet:=lAcb:=CTECriArq( _DbfTemp[2], ArqCte, cCT )})
...
Static Function CTECriArq( cDbf, cMsg, cCT, lMsg ) // FAZ A TROCA DE ARQUIVOS USANDO O ACBrMonitorPLUS
...
cte:=ACBrCTe():New(pDado+"ACBrLib.ini") // (RECARREGAR Configuração.INI)
...
lRet:=cte:Cancelar( cMsg )
Nos exemplos em Harbour para a NFe temos:
METHOD Cancelar(eChave, eJustificativa, eCNPJ, ALote) CLASS ACBrNFe
local hResult, buffer, bufferLen
bufferLen := STR_LEN
buffer := Space(bufferLen)
hResult := DllCall(::hHandle, DLL_OSAPI, "NFE_Cancelar", hb_StrToUTF8(eChave), hb_StrToUTF8(eJustificativa), hb_StrToUTF8(eCNPJ), ALote, @buffer, @bufferLen)
::CheckResult(hResult)
RETURN ::ProcessResult(buffer, bufferLen)
Veja que são parâmetros separados informados no método DllCall. Você está fazendo da mesma forma no CTe?
Não encontrei a implementação de ACBrCTe.Cancelar...