No vídeo de hoje, vamos demonstrar em como descobrir as funções com atalhos em memória.
A dúvida de hoje, nos perguntaram, se seria possível usando AdvPL, identificar quais funções estariam na memória em atalhos.
Pensando nisso, montamos esse exemplo, onde usamos o ponto de entrada ChkExec para ativar um atalho, e ao pressioná-lo ele percorre os atalhos em memória e mostra uma mensagem com a lista.
Segue abaixo o vídeo exemplificando:
E abaixo o código fonte desenvolvido:
//Bibliotecas #Include "TOTVS.ch" #Include "TopConn.ch" /*/{Protheus.doc} User Function ChkExec Ponto de entrada, ao abrir alguma rotina no menu @type Function @author Atilio @since 30/11/2023 @see @see https://tdn.totvs.com/display/public/framework/CHKEXEC+-+Dispara+ponto+de+entrada /*/ User Function ChkExec() Local aArea := FWGetArea() //Adiciona um atalho para verificar os atalhos principais em memória SetKey(K_SH_F5, {|| u_zVid0077() }) FWRestArea(aArea) Return /*/{Protheus.doc} User Function zVid0077 Função que abre uma tela com os principais atalhos configurados @type Function @author Atilio @since 30/11/2023 /*/ User Function zVid0077() Local aArea := FWGetArea() Local cTexto := "" Local cExibir := "" Local nKeyF Local cAtalhoKey Local aAtalhos := {} Local bKeyF Local cDescricao := "" Local nAtalho //Adiciona as teclas de atalho que serão verificadas //Caso queira adicionar outros, aqui tem a lista de atalhos possíveis - https://tdn.totvs.com/display/tec/SetKey aAdd(aAtalhos, {"F1", VK_F1}) aAdd(aAtalhos, {"F2", VK_F2}) //aAdd(aAtalhos, {"F3", VK_F3}) aAdd(aAtalhos, {"F4", VK_F4}) aAdd(aAtalhos, {"F5", VK_F5}) aAdd(aAtalhos, {"F6", VK_F6}) aAdd(aAtalhos, {"F7", VK_F7}) aAdd(aAtalhos, {"F8", VK_F8}) aAdd(aAtalhos, {"F9", VK_F9}) aAdd(aAtalhos, {"F10", VK_F10}) aAdd(aAtalhos, {"F11", VK_F11}) aAdd(aAtalhos, {"F12", VK_F12}) //Aqui vamos adicionar também as funções do Canivete de Atalhos ( https://terminaldeinformacao.com/2022/05/30/canivete-suico-de-atalhos-uteis-ti-responde-009/ ) //E a própria função dos atalhos (Shift F5) aAdd(aAtalhos, {"Ctrl + L", K_CTRL_L}) aAdd(aAtalhos, {"Shift + F5", K_SH_F5}) aAdd(aAtalhos, {"Shift + F7", K_SH_F7}) aAdd(aAtalhos, {"Shift + F8", K_SH_F8}) aAdd(aAtalhos, {"Shift + F9", K_SH_F9}) aAdd(aAtalhos, {"Shift + F11", K_SH_F11}) //Percorre as teclas For nKeyF := 1 To Len(aAtalhos) cDescricao := PadR(aAtalhos[nKeyF][1], 12) nAtalho := aAtalhos[nKeyF][2] //Busca o bloco de código bKeyF := &("SetKey(" + cValToChar(nAtalho) + ")") //Se o bloco de código existir If ValType(bKeyF) == "B" //Transforma o bloco de código em caractere cAtalhoKey := GetCBSource(bKeyF) //Incrementa a mensagem cTexto += "+ " + cDescricao + ": " + cAtalhoKey + CRLF //Volta o atalho para a memória SetKey(nAtalho, bKeyF) EndIf Next //Se houver texto If ! Empty(cTexto) cExibir := "Função: " + FunName() + CRLF cExibir += "Descrição: " + FunDesc() + CRLF cExibir += CRLF + CRLF cExibir += "Atalhos na Memória: " + CRLF + CRLF cExibir += cTexto ShowLog(cExibir) EndIf FWRestArea(aArea) Return
Bom pessoal, por hoje é só.
Abraços e até a próxima.