Jump to content
Fivewin Brasil

rochinha

Membros
  • Posts

    623
  • Joined

  • Last visited

  • Days Won

    70

Everything posted by rochinha

  1. Amiguinhos, Pelo que pude testar da impressão dos danfes se eu pegar um XML padrão 55 e trocar para 65 ele emite um DANFe NFC-e bunitim com QRCode. Não fiz nenhuma configuração só adcionei o ACBrLib.ini que encontrei aqui ou ali, principalmente porque não vi alguma interface para configurá-lo e ele é diferente do .ini do Monitor padrão. Eu entendi a sua indagação?
  2. Amiguinhos, betovsp que bom que todos nós conseguimos chegar a um resultado. Sucesso.
  3. Amiguinhos, OLIST é uma plataforma de vendas estilo Tray, OLX onde fornecedores de produtos podem incluir seus itens e o mesmo ser apresentado nas listas das Americanas, Shoptime, etc.
  4. Amiguinhos, Alguém que usa o OLIST para vender poderia por favor me apresentar um exemplo do arquivo de exportação de pedidos. Gostaria de adapta-lo para inserir vendas no sistema. Eu tenho cadastro no OLIST mas não fiz nenhuma venda. Então se alguém processa vendas por ele e puder fazer uma exportação de uma venda e me/nos apresentar um exemplo de código ficarei agradecido retornando a função de tratamento porteriormente. @braços.
  5. Amiguinhos, Uma coisa que notei nos testes é que o preview é fixo para aparecer na Impressão do SAT? A opção de não-previzualizar deve estar somente na versão SAC.
  6. Amiguinhos, O codigo da balança vem mais ou menos assim 2xxxxxxnnnnn onde 2 indica que o codigo precisa ser tratado, xxxxxx indica o código do produto no estoque(com zeros a esquerda) e nnnnn indica o valor R$ pesado. Bastará destrinchar, recalcular o que for necessário e trabalhar a inserção no pedido.
  7. Amiguinhos, Vilian como ainda uso uma versão de Harbour antiga(da minha infância) não tem a função DllCall(própria do xHarbour) mas tem a CallDll(para Harbour), mas fica mais lindo com DLL32 FUNCTION. As linhas que contém /* OK */ são as quais eu fiz uso sem erros as outras só traduzi mas ainda nem testei.
  8. Amiguinhos, Serve a classe TGET? Encontre dentro da pasta do Fivewin em source\classes\tget.prg
  9. Meu teste A lA Fivewin: #include "fivewin.ch" #include "dll.ch" #define DLL_CDECL 0x08 #define DLL_STDCALL 0x20 #define DLL_SYSTEM 0x04 #define STR_LEN 256 function main(_tipo_,_xml_) local oWnd public oACBrNFe32 := LoadLibrary( 'ACBrNFe32.dll' ) public oACBrSat32 := LoadLibrary( 'ACBrSat32.dll' ) if _tipo_ = NIL DEFINE WINDOW oWnd TITLE "ACBrLib Teste" FROM 5,5 TO 30,85 @ 3,10 BUTTON "Imprime NF-e" size 100,50 OF oWnd ACTION ImprimirNFE() @ 3,30 BUTTON "Imprime SAT" size 100,50 OF oWnd ACTION ImprimirSAT() @ 3,50 BUTTON "Fim-A-Fim NFe" size 100,50 OF oWnd ACTION FimAFimNFe() SET MESSAGE OF oWnd TO "Teste ACBrLib" date time noinset ACTIVATE WINDOW oWnd // CENTERED else do case case upper(_tipo_)="NFE" ImprimirNFE(_xml_) case upper(_tipo_)="CFE" ImprimirCFE(_xml_) case upper(_tipo_)="SAT" ImprimirSAT(_xml_) endcase endif return nil static function FimAFimNFe(eArquivoOuXml, cImpressora, nNumCopias, cProtocolo, bMostrarPreview, cMarcaDagua, bViaConsumidor, bSimplificado) local hResult, bufferLen, buffer, oErr local oDll := oACBrNFe32 // DllLoad( 'ACBrNFe32.dll' ) eArquivoOuXml := if(eArquivoOuXml=nil, "acbrnfe.xml", eArquivoOuXml) cImpressora := if(cImpressora=nil, "", cImpressora) nNumCopias := if(nNumCopias=nil, 1, nNumCopias) cProtocolo := if(cProtocolo=nil, "", cProtocolo) bMostrarPreview := if(bMostrarPreview=nil, "True", bMostrarPreview ) cMarcaDagua := if(cMarcaDagua=nil, "", cMarcaDagua) bViaConsumidor := if(bViaConsumidor=nil, "", bViaConsumidor) bSimplificado := if(bSimplificado=nil, "", bSimplificado) hResult := NFE_Inicializar( hb_StrToUTF8("ACBrLib.Ini"), hb_StrToUTF8("") ) hResult := NFE_CarregarXML( hb_StrToUTF8(eArquivoOuXml) ) hResult := NFE_Assinar() ?"hResult := NFE_Assinar()",hResult,,iif(hResult=-1,"Indica que a biblioteca não foi inicializada",iif(hResult=-10,"Indica que houve erro ao enviar o lote.","")) if !Empty(hResult) bufferLen := STR_LEN buffer := Space(bufferLen) oErr := NFE_UltimoRetorno( @buffer, @bufferLen) MsgStop(buffer, "NFE_Assinar-Erro: "+iif(hResult=-1,"Indica que a biblioteca não foi inicializada",iif(hResult=-10,"Indica que houve erro ao enviar o lote.",""))) endif hResult := NFE_Validar() ?"hResult := NFE_Validar()",hResult,,iif(hResult=-1,"Indica que a biblioteca não foi inicializada",iif(hResult=-10,"Indica que houve erro ao enviar o lote.","")) if !Empty(hResult) bufferLen := STR_LEN buffer := Space(bufferLen) oErr := NFE_UltimoRetorno( @buffer, @bufferLen) MsgStop(buffer, "NFE_Validar-Erro: "+iif(hResult=-1,"Indica que a biblioteca não foi inicializada",iif(hResult=-10,"Indica que houve erro ao enviar o lote.",""))) endif AIndex := 0 // Posição da NFe na lista, a lista inicia em 0 eNomeArquivo := hb_StrToUTF8(eArquivoOuXml) // Nome do arquivo xml a ser salvo. ePathArquivo := "c:\temp" // Local onde será salvo o xml hResult := NFE_GravarXml( AIndex, eNomeArquivo, ePathArquivo ) if !Empty(hResult) bufferLen := STR_LEN buffer := Space(bufferLen) oErr := NFE_UltimoRetorno( @buffer, @bufferLen) MsgStop(buffer, "NFE_GravarXml-Erro: "+iif(hResult=-1,"Indica que a biblioteca não foi inicializada",iif(hResult=-10,"Indica que houve erro ao enviar o lote.",""))) endif ALote := nRandom( 99999 ) // Numero do Lote a ser enviado AImprimir := "True" // Se True imprime o DANFe caso o NF-e for autorizado ASincrono := "True" // Se True imprime o envia em modo sincrono AZipado := "True" // Se True imprime o envia o arquivo zipado sResposta := "" // Usado pelo retorno, contem as informações retornadas pela consulta. esTamanho := "" // Usado pelo retorno, contem o tamanho da string (sResposta). hResult := NFE_Enviar( ALote, AImprimir, ASincrono, AZipado, @sResposta, @esTamanho ) if !Empty(hResult) bufferLen := STR_LEN buffer := Space(bufferLen) oErr := NFE_UltimoRetorno( @buffer, @bufferLen) MsgStop(buffer, "NFE_Enviar-Erro: "+iif(hResult=-1,"Indica que a biblioteca não foi inicializada",iif(hResult=-10,"Indica que houve erro ao enviar o lote.",""))) endif hResult := NFE_Imprimir( hb_StrToUTF8(cImpressora), nNumCopias, hb_StrToUTF8(cProtocolo), hb_StrToUTF8(bMostrarPreview), hb_StrToUTF8(cMarcaDagua), hb_StrToUTF8(bViaConsumidor), hb_StrToUTF8(bSimplificado) ) hResult := NFE_ImprimirPDF("acbrnfe.xml") return nil static function ImprimirCFE(eArquivoOuXml, cImpressora, nNumCopias, cProtocolo, bMostrarPreview, cMarcaDagua, bViaConsumidor, bSimplificado) return nil static function ImprimirNFE(eArquivoOuXml, cImpressora, nNumCopias, cProtocolo, bMostrarPreview, cMarcaDagua, bViaConsumidor, bSimplificado) local hResult, bufferLen, buffer, oErr local oDll := oACBrNFe32 // DllLoad( 'ACBrNFe32.dll' ) eArquivoOuXml := if(eArquivoOuXml=nil, "acbrnfe.xml", eArquivoOuXml) cImpressora := if(cImpressora=nil, "", cImpressora) nNumCopias := if(nNumCopias=nil, 1, nNumCopias) cProtocolo := if(cProtocolo=nil, "", cProtocolo) bMostrarPreview := if(bMostrarPreview=nil, "True", bMostrarPreview ) cMarcaDagua := if(cMarcaDagua=nil, "", cMarcaDagua) bViaConsumidor := if(bViaConsumidor=nil, "", bViaConsumidor) bSimplificado := if(bSimplificado=nil, "", bSimplificado) hResult := NFE_Inicializar( hb_StrToUTF8("ACBrLib.Ini"), hb_StrToUTF8("") ) hResult := NFE_CarregarXML( hb_StrToUTF8(eArquivoOuXml) ) hResult := NFE_Imprimir( hb_StrToUTF8(cImpressora), nNumCopias, hb_StrToUTF8(cProtocolo), hb_StrToUTF8(bMostrarPreview), hb_StrToUTF8(cMarcaDagua), hb_StrToUTF8(bViaConsumidor), hb_StrToUTF8(bSimplificado) ) //hResult := NFE_ImprimirPDF("acbrnfe.xml") if !Empty(hResult) bufferLen := STR_LEN buffer := Space(bufferLen) oErr := NFE_UltimoRetorno( @buffer, @bufferLen) MsgStop(buffer, "Erro: "+Str(hResult)) endif NFE_Finalizar() //DllUnload(oDll) return nil static function ImprimirSAT(eArquivoOuXml, cImpressora) local hResult, bufferLen, buffer, oErr local oDll := oACBrSat32 // DllLoad( 'ACBrSat32.dll' ) eArquivoOuXml := if(eArquivoOuXml=nil, "acbrsat.xml", eArquivoOuXml) cImpressora := if(cImpressora=nil, "", cImpressora) hResult := SAT_Inicializar( hb_StrToUTF8("ACBrLib.Ini"), hb_StrToUTF8("") ) hResult := SAT_ImprimirExtratoVenda( hb_StrToUTF8(eArquivoOuXml), hb_StrToUTF8(cImpressora) ) if !Empty(hResult) bufferLen := STR_LEN buffer := Space(bufferLen) oErr := SAT_UltimoRetorno( @buffer, @bufferLen ) MsgStop(buffer, "Erro: "+Str(hResult)) endif SAT_Finalizar() //DllUnload(oDll) return nil /* OK */ DLL32 FUNCTION NFE_Inicializar( param1 AS STRING, param2 AS STRING ) AS LONG PASCAL FROM "NFE_Inicializar" LIB oACBrNFe32 /* OK */ DLL32 FUNCTION NFE_CarregarXML( param1 AS STRING ) AS LONG PASCAL FROM "NFE_CarregarXML" LIB oACBrNFe32 /* OK */ DLL32 FUNCTION NFE_Imprimir( param1 AS STRING, param2 AS LONG, param3 AS STRING, param4 AS STRING, param5 AS STRING, param6 AS STRING, param7 AS STRING ) AS LONG PASCAL FROM "NFE_Imprimir" LIB oACBrNFe32 /* OK */ DLL32 FUNCTION NFE_UltimoRetorno( param1 AS STRING, param2 AS LONG ) AS LONG PASCAL FROM "NFE_UltimoRetorno" LIB oACBrNFe32 /* OK */ DLL32 FUNCTION NFE_Finalizar() AS LONG PASCAL FROM "NFE_Finalizar" LIB oACBrNFe32 /* OK */ DLL32 FUNCTION NFE_ImprimirPDF() AS LONG PASCAL FROM "NFE_ImprimirPDF" LIB oACBrNFe32 /* */ DLL32 FUNCTION NFE_CarregarINI( param1 AS STRING ) AS LONG PASCAL FROM "NFE_CarregarINI" LIB oACBrNFe32 /* Nome Tipo Opcional Descricao 01 AIndex Integer Não Posição da NFe na lista, a lista inicia em 0. 02 sResposta String Não Usado pelo retorno, contem as informações retornadas. 03 esTamanho Integer Não Usado pelo retorno, contem o tamanho da string (sResposta). *//* */ DLL32 FUNCTION NFE_ObterXml( param1 AS LONG, param2 AS STRING, param3 AS LONG ) AS LONG PASCAL FROM "NFE_ObterXml" LIB oACBrNFe32 /* Nome Tipo Opcional Descricao 01 AIndex Integer Não Posição da NFe na lista, a lista inicia em 0. 02 eNomeArquivo String Sim Nome do arquivo xml a ser salvo. 03 ePathArquivo String Sim Local onde será salvo o xml *//* */ DLL32 FUNCTION NFE_GravarXml( param1 AS LONG, param2 AS STRING, param3 AS STRING ) AS LONG PASCAL FROM "NFE_GravarXml" LIB oACBrNFe32 /* Nenhum parametro *//* */ DLL32 FUNCTION NFE_Assinar() AS LONG PASCAL FROM "NFE_Assinar" LIB oACBrNFe32 /* Nenhum parametro *//* */ DLL32 FUNCTION NFE_Validar() AS LONG PASCAL FROM "NFE_Validar" LIB oACBrNFe32 /* Nome Tipo Opcional Descricao 01 eChaveOuNFe String Não Path com o nome do arquivo XML a ser consultado ou o conteúdo do XML. 02 AExtrairEventos Boolean Não Informe se deve ou não extrair os eventos, se houver os mesmos na reposta. 03 sResposta String Não Usado pelo retorno, contem as informações retornadas pela consulta. 04 esTamanho Integer Não Usado pelo retorno, contem o tamanho da string (sResposta). *//* */ DLL32 FUNCTION NFE_Consultar( param1 AS STRING, param2 AS BOOL, param3 AS STRING, param4 AS LONG ) AS LONG PASCAL FROM "NFE_Consultar" LIB oACBrNFe32 /* Nome Tipo Opcional Descricao 01 ACNPJ String Não CNPJ do emitente 02 AJustificativa String Não Motivo por estar solicitando a Inutilização 03 Ano Integer Não Ano 04 Modelo Integer Não Modelo deve ser informado 55 para NF-e ou 65 para NFC-e 05 Serie Integer Não Serie do Documento Fiscal 06 NumeroInicial Integer Não Numero Inicial a que se deseja Inutilizar 07 NumeroFinal Integer Não Numero Final a se se deseja Inutilizar 08 sResposta String Não Usado pelo retorno, contem as informações retornadas pela consulta. 09 esTamanho Integer Não Usado pelo retorno, contem o tamanho da string (sResposta). *//* */ DLL32 FUNCTION NFE_Inutilizar( param1 AS STRING, param2 AS STRING, param3 AS LONG, param4 AS LONG, param5 AS LONG, param6 AS LONG, param7 AS LONG, param8 AS STRING, param9 AS LONG ) AS LONG PASCAL FROM "NFE_Inutilizar" LIB oACBrNFe32 /* Nome Tipo Opcional Descricao 01 ALote Integer Não Numero do Lote a ser enviado 02 AImprimir Boolean Não Se True imprime o DANFe caso o NF-e for autorizado 03 ASincrono Boolean Não Se True imprime o envia em modo sincrono 04 AZipado Boolean Não Se True imprime o envia o arquivo zipado 05 sResposta String Não Usado pelo retorno, contem as informações retornadas pela consulta. 06 esTamanho Integer Não Usado pelo retorno, contem o tamanho da string (sResposta). *//* */ DLL32 FUNCTION NFE_Enviar( param1 AS LONG, param2 AS BOOL, param3 AS BOOL, param4 AS BOOL, param5 AS STRING, param6 AS LONG ) AS LONG PASCAL FROM "NFE_Enviar" LIB oACBrNFe32 /* Nome Tipo Opcional Descricao 01 eChave String Não Chave de acesso do XML a ser cancelado. 02 AJustificativa String Não Motivo do cancelamento 03 eCNPJ String Não CNPJ do emitente 04 ALote Integer Não Numero do Lote do evento de cancelamento 05 sResposta String Não Usado pelo retorno, contem as informações retornadas pela consulta. 06 esTamanho Integer Não Usado pelo retorno, contem o tamanho da string (sResposta) *//* */ DLL32 FUNCTION NFE_Cancelar( param1 AS STRING, param2 AS STRING, param3 AS STRING, param4 AS LONG, param5 AS STRING, param6 AS LONG ) AS LONG PASCAL FROM "NFE_Cancelar" LIB oACBrNFe32 /* Nome Tipo Opcional Descricao 01 sResposta String Não Usado pelo retorno, contem as informações retornadas pela consulta. 02 esTamanho Integer Não Usado pelo retorno, contem o tamanho da string (sResposta). *//* */ DLL32 FUNCTION NFE_StatusServico( param1 AS STRING, param2 AS LONG ) AS LONG PASCAL FROM "NFE_StatusServico" LIB oACBrNFe32 /* Nome Tipo Opcional Descricao 01 ePara String Não Destinatário 02 eChaveNFe String Não Path com o nome do arquivo XML a ser anexado ao e-mail 03 AEnviaPDF Boolean Não Se True gera o PDF do DANFe e anexa ao e-mail 04 eAssunto String Não Texto contendo o assunto do e-mail 05 eCC String Não endereços separados por ponto e vírgula que receberão uma cópia do e-mail 06 eAnexos String Não Path com o nome de arquivos separados por ponto e vírgula a serem anexados ao e-mail 07 eMensagem String Não Texto referente a mensagem do e-mail *//* */ DLL32 FUNCTION NFE_EnviarEmail( param1 AS STRING, param2 AS STRING, param3 AS BOOL, param4 AS STRING, param5 AS STRING, param6 AS STRING, param7 AS STRING ) AS LONG PASCAL FROM "NFE_EnviarEmail" LIB oACBrNFe32 /* OK */ DLL32 FUNCTION SAT_Inicializar( param1 AS STRING, param2 AS STRING ) AS LONG PASCAL FROM "SAT_Inicializar" LIB oACBrSat32 /* OK */ DLL32 FUNCTION SAT_ImprimirExtratoVenda( param1 AS STRING, param2 AS STRING ) AS LONG PASCAL FROM "SAT_ImprimirExtratoVenda" LIB oACBrSat32 /* OK */ DLL32 FUNCTION SAT_ImprimirExtratoCancelamento( param1 AS STRING, param2 AS STRING ) AS LONG PASCAL FROM "SAT_ImprimirExtratoCancelamento" LIB oACBrSat32 /* OK */ DLL32 FUNCTION SAT_UltimoRetorno( param1 AS STRING, param2 AS LONG ) AS LONG PASCAL FROM "SAT_UltimoRetorno" LIB oACBrSat32 /* OK */ DLL32 FUNCTION SAT_Finalizar() AS LONG PASCAL FROM "SAT_Finalizar" LIB oACBrNFe32 FUNCTION hb_StrToUTF8( param1 ) // Dummy Function return param1
  10. Amiguinhos, Acho que na área de download do forum. Creio que o auto liberou esta classe junto com EasyReport.
  11. Amiguinhos, Deixarei uma dica: - Ao invés de usar IP o que força que a mensagem só vá para um determinado computador e requer configuração de endereços, use uma tabela na rede. - A barra de status nos aplicativo sem Fivewin pode receber imagens e ter blocos separadores de informações, exemplo, teclas de funções, hora e data são apresentadas ou não nela. - Configurar um espaço na barra de status para apresentar um ícone que diga ao usuário que existem mensagem para ele na base de conversação. - A tabela de mensagens poderia ter no minimo os campos, usuário e mensagem. As mensagens são filtradas por usuário. Se o seu sistema tem tela de entrada que solicita usuario e senha é bom para o usuário que tem sua própria máquina mas no caso de uma máquina onde vários usuários diferentes usam o mesmo aplicativo , ao clicar no tal ícone, abre uma tela solicitando usuario e senha e filtre suas mensagens no momento e destrua a filtragem ao final. - O fato da tabela de mensagens estar na rede o usuário que tenha se deslocado de seu setor no térreo para o quinto andar possa responder de qualquer terminal a solicitação de mensagem. - O vendedor ao digitar o orçamento é assinalado no sistema como tendo o nivel 2. Para faturar necessita nivel 3 o qual somente o gerente ao escolher o pedido e entrar com senha possa escolher alterar este nilve de liberação. - Ao ser lançado um orçamento pode ser automatizada uma mensagem ao gerente solicitando liberação e o gerente ao marcar orçamento como liberado automatiza mensagem de resposta ao vendedor.
  12. Amiguinhos, Estava reduzindo os links armazenados em meus favoritos e tipificando-os quando encontrei: https://www.script-tutorials.com/google-places-api-practice/ O que você precisa é o que o Google Places lhe permitirá apresentar.
  13. Amiguinhos, Não conclui nem a LGBT, quanto mais...
  14. Amiguinhos, Kapiaba na verdade não quero que o aplicativo padrão abra, eu quero saber se diretamente o comando funciona. As vezes o cliente já tem o Acrobat instalado e não dá pra instalar mais um, pois com o tempo eles tomam para si a possibilidade de manusear os arquivos originais e o cliente começa indagar. O SumatraPDF parece ser pequeno e aceitar comandos diretos via command line. Mas o intuítuo é ter todas opções. Se puder testar aí me informa.
  15. Amiguinhos, Encontrei uma anotação em meus .PRGs assim: C:\Program Files\Adobe\Reader 9.0\Reader\acrord32.exe /t "%s" "WinFax" Onde "%s" seria o parâmetro contenedor do nome do arquivo .PDF a ser impresso. Eu não uso Acrobat, uso versões menores como PDF Reader, etc. Funciona?
  16. Amiguinhos, Aqui tem algumas dicas sobre uso do ADO com banco de dados. Vale frisar que ADO necessita de driver ODBC compativel com o banco de dados a ser usado. Bom trabalho.
  17. Amiguinhos, Aqui tem algumas dicas sobre uso do ADO com banco de dados. Vale frisar que ADO necessita de driver ODBC compativel com o banco de dados a ser usado. Bom trabalho.
  18. Amiguinhos, kapiaba muitas das informações contidas num boleto podem sesr automatizadas quando voce fecha o pedido e lança as parcelas financeiras no seu arquivo financeiro. Numa tela como esta você pode apresentar os dados de um boleto existente para possível complemento de informação. Para cadastro, imagine que fuçuários são preguicosos ao ponto de terem pavor de preencher estes documentos. Não sei se você vai colocar uma imagem de um boleto vazio como fundo desta tela, ficaria legal pois o boleto wysewyg ficaria perfeito na apresentação pré-impressão. e muitos dos campos ai teriam de ser suportados por combos para prevenir preguiça(erros de preenchimento) e invalidação do boleto. Não cheguei a completar a compilação do trecho que o Ladinilson postou para verificar a saida final, mas antes de criar a tela, programe a impressão com dados da empresa e proceda a homologação. Passando pela homologação junto ao banco(homologação: nome bonito que define: Você ir até um banco, enfrentar fila, pagar um boleto e o caixa lhe responder que o boleto é inválido ou não). Resumindo, acrescente a opção de Emitir Boleto deste Registro? e complete internamente todos os campos necessários e gere a impressão. Tudo ok? cliente satisfeito? fuçonários felizes, ai pare com tempo, abra uma breja, pegue um torresminho e começe a desenhar a tela. Alguns Fuçuário são chatos o bastante pra colocar tanta exigência que se um sistema pudesse ser baseado no que eles querem ver o sistema teria apenas uma dialogo e um botão no meio dizendo: Aperte aqui que eu faço o Resto.
  19. Amiguinhos, Ladinilson, posta a estrutura do filiais pra nóis, valeu?
  20. Amiguinhos, Theotokos, na pasta samples do Fivewin tem o exemplo do que você necessita, procure por algo com *tray*. O exemplo permite apresentar um ícone no tray e ao clicar um menu pode ser manipulado. Show-de-Bola.
  21. Amiguinhos, Theotokos, não querendo tirar o mérito da resposta do marcioe devo informá-lo que a implementação é rápida e indolor( igual a aplicação de Ozônio ). Basta usar em qualquer parte do seu programa a função FUNCTION ShowMsgTray(cMsg, cTit): ... nNumeroDePedidos := 3 ShowMsgTray( "Chegaram "+strZero(nNumeroDePedidos,2)+" pedidos", "Chegada de Pedidos" ) ... Ainda terá de incluir o trecho em algum .PRG de funções do seu ambiente. #pragma BEGINDUMP #include <hbapi.h> #define _WIN32_IE 0x0501 #include <windows.h> #ifndef NIF_INFO #define NIF_INFO 0x00000010 #define NIIF_INFO 0x00000001 #endif #ifndef NIIF_NOSOUND #define NIIF_NOSOUND 0x00000010 #endif HB_FUNC( GETNOTIFYICONDATA ) { NOTIFYICONDATAA nid; memset( &nid, 0, sizeof( NOTIFYICONDATA ) ); nid.cbSize = sizeof( NOTIFYICONDATA ); #ifndef _WIN64 nid.hWnd = ( HWND ) hb_parnl( 1 ); #else nid.hWnd = ( HWND ) hb_parnll( 1 ); #endif nid.uID = ( UINT ) hb_parnl( 2 ); nid.uFlags = NIF_INFO | NIF_MESSAGE | NIF_ICON | NIF_TIP ; nid.dwInfoFlags = NIIF_INFO | NIIF_NOSOUND; nid.uCallbackMessage = ( UINT ) hb_parnl( 3 ); #ifndef _WIN64 nid.hIcon = ( HICON ) hb_parnl( 4 ); #else nid.hIcon = ( HICON ) hb_parnll( 4 ); #endif strcpy( nid.szTip, hb_parc( 5 ) ); strcpy( nid.szInfo, hb_parc( 5 ) ); strcpy( nid.szInfoTitle, hb_parc( 6 ) ); hb_retclen( ( char * ) &nid, sizeof( NOTIFYICONDATA ) ); } #pragma ENDDUMP
  22. Amiguinhos, resource: dlgConfirma DIALOG 31, 35, 283, 105 STYLE DS_MODALFRAME | 0x4L | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Confirmar rotina" FONT 8, "Tahoma" { DEFPUSHBUTTON "Não", 2, 228, 32, 50, 14 PUSHBUTTON "Sim", 1, 175, 32, 50, 14 PUSHBUTTON "Inativar", 3, 174, 86, 104, 14 ICON "icon_lixeira", 100, 6, 5, 21, 20 LTEXT "Tem certeza de que deseja excluir o registro escolhido? Isto não poderá ser revertido posteriormente.", 101, 35, 5, 244, 26 ICON "icon_info", 103, 6, 58, 21, 20 LTEXT "Voce poderá colocar o registro na situação de inativo ou arquivo morto e poderá recuperá-lo posteriormente.", 102, 35, 58, 244, 26 GROUPBOX "", -1, -6, 48, 296, 62, BS_GROUPBOX }
  23. Amiguinhos, DEVCON é o aplicativo mais importante do Windows pois ele faz todo o trabalho transparente de manutenção, inclusão e exclusão de recursos periféricos do sistema operacional. Seu uso não pode ser indiscriminado pois um erro pode detonar a instalação de forma que só uma re-instalação possa resolver. Use com moderação. Eu mesmo nem uso, prefiro taskkill/, net start/stop para os meus afazeres.
×
×
  • Create New...