Estive recentemente fazendo alguns testes com OCX para integra-las ao meu sistema em Fivewin e consegui exito usando NSLOCK15.OCX.
Usei a versão 2.7 que possui uma classe tActivex que permite acesso direto a estas caracteristicas.
Não sei qual biblioteca voce usa com o Harbour mas poderia adaptar o codigo a seguir usando o TAutoOLE do Harbour anexando a sua linkagem a HBOLE.LIB.
- Code: Select all Expand view RUN
// FiveWin ActiveX support demo - Using Adobe Acrobat Reader
#include "FiveWin.ch"
function Main()
local oWnd, oActiveX, cLiberationKey := space(16)
DEFINE WINDOW oWnd TITLE "FiveWin ActiveX Support"
oActiveX = TActiveX():New( oWnd, "nslock15vb5.ActiveLock" )
oActiveX:Do( "Password" , "minhasenha" )
oActiveX:Do( "SoftwareName" , "NomeDoSistema" )
oActiveX:Do( "LiberationKeyLength", 16 )
oActiveX:Do( "SoftwareCodeLength" , 16 )
//? oActiveX:GetProp( "SoftwareCode" )
if ! oActiveX:GetProp( "RegisteredUser" )
MsgGet( "Entre a chave de liberacao",; // Title
"Chave:",; // Label
@cLiberationKey ) // A variable by reference
oActiveX:Do( "LiberationKey", cLiberationKey )
endif
if ! oActiveX:GetProp( "RegisteredUser" )
if oActiveX:GetProp( "LastRunDate" ) > date()
? 'Data foi retrocedida. Programa sera encerrado'
else
? 'Faltam ' + Str( 30 - oActiveX:GetProp( "UsedDays" ) ) + ' dias.'
endif
? 'DEMONSTRACAO'
oWnd:cCaption := 'DEMONSTRACAO'
SysRefresh()
else
? 'REGISTRADO'
oWnd:cCaption := 'REGISTRADO'
SysRefresh()
endif
//oWnd:oClient = oActiveX // To fill the entire window surface
ACTIVATE WINDOW oWnd
return nil
Troque as linhas para uso com o TAutoOLE
Para manuseio do Activex através de TActiveX:
- Code: Select all Expand view RUN
oActiveX = TActiveX():New( oWnd, "nslock15vb5.ActiveLock" )
// Métodos
oActiveX:Do( "Metodo" , "string" )
// Propriedades
oActiveX:GetProp( "RegisteredUser" )
oActiveX:SetProp( "Propriedade", 123 )
oActiveX:SetProp( "Propriedade", "String" )
Para manuseio do Activex através de TAutoOLE:
- Code: Select all Expand view RUN
oAutoOLE := TOleAuto():New( "nslock15vb5.ActiveLock" )
// Propriedades
oAutoOLE:Get( "propriedade" )
oAutoOLE:Set( "propriedade" , 123 )
oAutoOLE:Set( "propriedade" , "string" )
// Métodos
oActiveX:Do( "Metodo" , "string" )
// Termina objeto OLE
oAutoOLE:End()
ou
cVariavel := oAutoOLE:propriedade // Usado para GET da propriedade
oAutoOLE:propriedade := 123 // Usado para SET a propriedade
oAutoOLE:propriedade := "string"
Para manuseio do Activex através de CreateOleObject:
- Code: Select all Expand view RUN
hWordOle := CreateOleObject( "nslock15vb5.ActiveLock" )
// Propriedades
OleGetProperty( hWordOle, "propriedade" )
OleSetProperty( hMainWnd, "propriedade", 123 )
OleSetProperty( hMainWnd, "propriedade", "string" )
// Métodos
OleInvoke( hWordOle, "Metodo", "parametro" )
OleInvoke( hWordOle, "Metodo" )
// Termina objeto OLE
OleUninitialize()
O que foi colocado aqui o que tirei de cabeça pode não estar tão correto mais basta dar uma pesquisada em exemplos de uso destes recursos e voce verá que é este o caminho.
A NSLOCK pode ser baixada de:
VB - Protegendo sua aplicação com o nslock em 7 etapas. José Carlos Marcoratti
@braços :?)