Clipper On Line • Ver Tópico - Novo projeto

Novo projeto

Projeto hbNFe (Nota Fiscal Eletronica/Danfe) para [x]Harbour

Moderador: Moderadores

 

Novo projeto

Mensagempor JoséQuintas » 30 Jul 2015 22:11

Voltando ao caso do MSXML2, pra ficar registrado, porque tem horas que é difícil achar informação:

SXH_OPTION_SELECT_CLIENT_SSL_CERT

By default, the value of this option is an empty string (""), which means pick the first certificate in the local store to send if the server requests a client certificate.

The SXH_OPTION_SELECT_CLIENT_SSL_CERT option is a string that lets you select which client certificate from the local store should be sent. You must set this option before calling the send method. The following example sets the client certificate option to request the client certificate named "MSXML": certName = shx.getOption(3) = "MSXML"


https://msdn.microsoft.com/en-us/library/ms753798(v=vs.85).aspx

Mas agora até confundiu, porque existe o setOption() e o getOption(), e parece que esse manual está invertido.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Novo projeto

Mensagempor ROBERTO SÁVIO » 21 Ago 2015 16:04

Prezados
Estou apanhando para usar uma DLL.
Fiz o registro como o José Quintas falou e nada.
Primeiro fiz em \Windows\syswow64\regsvr32.exe
Depois em \Windows\system32\regsvr32.exe
Meu código é o seguinte:

// nDll := LoadLibrary( "C:\Windows\SysWOW64\SLineCripto.dll" ) já usei assim qdo estava registrado em 64 bits
nDll := LoadLibrary( "C:\Windows\System32\SLineCripto.dll" )
// pFunc := GetProcAddress( nDll,"GeraCripto") já tentei assim
// mchave := CallDll(pFunc,numero,merro)

mchave := DllCall( nDll,, "GeraCripto", numero, merro) e assim

nada funciona.
Me ajudem por favor.
Grato
Roberto Sávio
xHarbour
ROBERTO SÁVIO
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 29
Data de registro: 29 Mai 2014 10:56
Cidade/Estado: CORONEL FABRICIANO/MG
Curtiu: 3 vezes
Mens.Curtidas: 1 vez

Novo projeto

Mensagempor JoséQuintas » 21 Ago 2015 17:52

1) Quando registrou, foi tudo bem ou deu mensagem de erro?
- Tem DLL que se registra, e tem DLL que não

2) As funções em DLL são case sensitive

3) Os parâmetros precisam estar em conformidade com a DLL
Exemplo: Pointer aonde é pointer, com tamanho de acordo com o resultado (mais conhecido em Clipper/Harbour como por referência)

Nota:
Não é automático: se registrou errado, precisa des-registrar.
regsvr32 /u arquivo.dll
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Novo projeto

Mensagempor ROBERTO SÁVIO » 22 Ago 2015 10:16

Jose Quintas
O registro foi sem erro, mas vou fazer o seguinte:
Des-registrar e começar tudo de novo.
O código que usei peguei da documentação exemplo do xHarbour.
Minha dúvida é a seguinte:
Registro em 64 bits?
Registro em 32 bits?
Posso registrar nos dois?
Grato
Roberto Sávio
xHarbour
ROBERTO SÁVIO
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 29
Data de registro: 29 Mai 2014 10:56
Cidade/Estado: CORONEL FABRICIANO/MG
Curtiu: 3 vezes
Mens.Curtidas: 1 vez

Novo projeto

Mensagempor JoséQuintas » 22 Ago 2015 10:46

Aproveitei pra pesquisar.
Tem a ver com o formato da DLL, e não com o uso:

Run the Regsvr32 command from an elevated command prompt
Use the 32-bit version of Regsvr32 to register a 32-bit DLL on a 64-bit version of Windows


https://support.microsoft.com/en-us/kb/249873
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Novo projeto

Mensagempor ROBERTO SÁVIO » 22 Ago 2015 12:04

José Quintas
Meu windows é 64 bits, então registrei no SYSWOW64, como o proprietário da DLL sugeriu.
Quando executo o comando nDll := LoadLibrary( "C:\Windows\SysWOW64\SLineCripto.dll" ), retorna um número em nDll.
Quando executo mchave := DllCall( nDll,, "GeraCripto", numero, @merro) não retorna dada em mchave.
Segundo o proprietário "GeraCripto" seria o método para criptografar, passando como parâmetro a variável número (string a ser criptografada) e merro (retorno de erro).
Vou mandar a DLL, em anexo.
Anexos
SLineCripto.rar
Dll
(12.14 KiB) Baixado 96 vezes
ROBERTO SÁVIO
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 29
Data de registro: 29 Mai 2014 10:56
Cidade/Estado: CORONEL FABRICIANO/MG
Curtiu: 3 vezes
Mens.Curtidas: 1 vez

Novo projeto

Mensagempor JoséQuintas » 22 Ago 2015 13:41

Se fizer TYPE slinecripto.dll, vai encontrar o texto:
\HIPOCRATES\Trabalho\Desenvolvimento\Fontes-Atualizadas\DLL_Sline\SLineCripto\SLineCripto.vbp

Isso é o nome de um projeto em VISUAL BASIC 6.
Eu adoraria que DLLs de VB6 funcionassem em Harbour, mas só funcionam em VB6.

E como era de se esperar, no VB6 ok. Aqui o VB6 mostrando a função da DLL e os parâmetros.

vb6.png
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Novo projeto

Mensagempor ROBERTO SÁVIO » 24 Ago 2015 10:59

José Quintas
Mais uma vez, obrigado.
Eu acreditei que ao desenvolver uma DLL, a empresa estaria objetivando a interdependência de plataformas, entre outras funcionalidades.
Me enganei e perdi muito tempo, tentando fazer a coisa funcionar.
Grande abraço
Roberto Sávio
Harbour
ROBERTO SÁVIO
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 29
Data de registro: 29 Mai 2014 10:56
Cidade/Estado: CORONEL FABRICIANO/MG
Curtiu: 3 vezes
Mens.Curtidas: 1 vez

Novo projeto

Mensagempor JoséQuintas » 24 Ago 2015 12:09

Só complementando:
A mesma coisa vale pro Harbour e pro VB6
Dá pra criar DLL em Harbour ou VB6.
Pra funcionar em outra linguagem vai precisar de detalhes especiais na preparação da DLL.

No VB6, um jeito não oficial é colocar um programa intermediário na compilação/linquedição pra acrescentar esse recurso.
Caso queira tentar passar para seu fornecedor, aqui tem um roteiro.

http://www.windowsdevcenter.com/pub/a/windows/2005/04/26/create_dll.html?page=1

Explicando:
É como se a IDE do VB6 tivesse arquivos BATs pra compilar, com parâmetros pré-definidos.
Uma das coisas é colocar uma rotina intermediária, que permite modificar esses "BATs", pra usar configuração diferente.
E o restante, é ler o texto.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Novo projeto

Mensagempor ROBERTO SÁVIO » 25 Ago 2015 11:15

José Quintas
Entrei em contato com o fornecedor e me disse que a DLL foi desenvolvida em Delphi.
Enviou o PRG abaixo:

DYNAMIC M1
FUNCTION slin21
Local hLib

hb_cdpSelect( "RU866" )
hLib := hb_LibLoad( "mylib.dll" )
IF !Empty( hLib )
M1()
ENDIF
hb_LibFree( hLib )
RETURN Nil

Foi escrito usando funções do harbour. Será que para xharbour é a mesma coisa?
Roberto Sávio
ROBERTO SÁVIO
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 29
Data de registro: 29 Mai 2014 10:56
Cidade/Estado: CORONEL FABRICIANO/MG
Curtiu: 3 vezes
Mens.Curtidas: 1 vez

Novo projeto

Mensagempor JoséQuintas » 25 Ago 2015 11:47

hLib := hb_LibLoad( "mylib.dll" )


Não entendi.
O que tem a ver mylib.dll com slinecripto.dll ?
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Novo projeto

Mensagempor ROBERTO SÁVIO » 25 Ago 2015 12:10

José Quintas
Acredito que seja isto:
DYNAMIC M1
FUNCTION slin21
Local hLib

hb_cdpSelect( "RU866" )
hLib := hb_LibLoad( "slinecripto.dll" )
IF !Empty( hLib )
M1()
ENDIF
hb_LibFree( hLib )
RETURN Nil

Roberto Sávio
ROBERTO SÁVIO
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 29
Data de registro: 29 Mai 2014 10:56
Cidade/Estado: CORONEL FABRICIANO/MG
Curtiu: 3 vezes
Mens.Curtidas: 1 vez

Novo projeto

Mensagempor JoséQuintas » 25 Ago 2015 12:57

Pera aí...

Pra mostrar que funciona, o fornecedor mandou um fonte que NÃO USA a dll?
Como então ele considera que funciona?

Com certeza, caso realmente seja Delphi, o que eu não acredito, deveria ser diferente, se é que é possível.

Que eu saiba, as funções do harbour/xharbour são pra usar uma função dentro de uma DLL.
Como tem programador que gosta de complicar, não existe a função GeraCripto()
O que existe é uma classe que possui o método GeraCripto()
Portanto, o exemplo não serve pra essa DLL.
Tem mais esse ponto a considerar, na "briga" com a dll.

Sinto muito, mas só o fornecedor vai poder te ajudar.
A propósito, encontrei o "manual":

2.13. Criptografia dos Campos - Detalhamento
Os campos SL_CHAVE, SL_SENHA, SL_COD_DOC e SL_OPER (OPER_REGANS,
OPER_NUMCARTEIRA, OPER_EXAME e OPER_NUMGUIA) devem ser criptografados, isto é,
antes de compor cada um destes campos, deve-se executar a DLL (SLineCripto.dll), fornecida
pela S_Line, que retornará o campo criptografado para preencher cada tag, sendo:
GeraCripto(TEXTO_A_CRIPTOGRAFAR, ref RETORNO_DE_ERRO);
O método GeraCripto possui os seguintes parâmetros:
• TEXTO_A_CRIPTOGRAFAR: Texto que deseja que seja criptografado;
• RETORNO_DE_ERRO: Caso essa variável venha preenchida ao término do método,
aconteceu algum problema ao criptografar.
Caso aconteça tudo certo, a string criptografada será o retorno do método GeraCripto.
Nota: Para usar a DLL (SLineCripto.dll), deve-se registrá-la no Windows da seguinte maneira:
• Windows 32 bits: Abrir o Prompt de Comando, ir até a pasta onde se encontra a dll e
executar: regsvr32 SLineCripto.dll (talvez seja preciso executar o Prompt de Comando
como Administrador);
• Windows 64 bits: Colocar a DLL na pasta C:\Windows\SysWOW64, abrir o Prompt de
Comando, entrar na pasta acima e executar: regsvr32 SLineCripto.dll (talvez seja
preciso executar o Prompt de Comando como Administrador).


http://www.sline.com.br/proprio.htm
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Novo projeto

Mensagempor ROBERTO SÁVIO » 25 Ago 2015 15:07

José Quintas
Concordo em gênero, número e grau com você.
Estou também em contato com o fornecedor, tentando resolver a pendenga.
Se houver algo de novo, darei notícias.
De qualquer maneira a discurssão serviu para aprendermos um pouco mais sobre o assunto.
Muito obrigado e um grande abraço.
Roberto Sávio
xHarbour
ROBERTO SÁVIO
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 29
Data de registro: 29 Mai 2014 10:56
Cidade/Estado: CORONEL FABRICIANO/MG
Curtiu: 3 vezes
Mens.Curtidas: 1 vez

Anterior



Retornar para Projeto hbNFe

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 7 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro