druzus wrote:
>
> Log Message:
> -----------
> 2010-05-26 00:03 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
> * harbour/contrib/hbwin/Makefile
> + harbour/contrib/hbwin/hbolesrv.c
> + added inproc OLE server implementation. It allows to create
> OLE/ACTIVEX
> COM server in Harbour. Such OLE server allows can be used by
> programs
> written in any languages supporting OLE automation (also in other
> Harbour applications)
>
Thank you for this great contribution once again.
Here is my Vouch32 ActiveX Server code compiled with xhb.com:
-------------------------------------------
//-------------------------------------------------------------------//
//-------------------------------------------------------------------//
//-------------------------------------------------------------------//
//
// Vouch32 Active-X Dll
//
//-------------------------------------------------------------------//
//-------------------------------------------------------------------//
//-------------------------------------------------------------------//
#pragma BEGINDUMP
#define CLS_Name "Vouch32.Vouch.1"
#define CLS_ID "{1F6C0963-1581-498a-9035-E75A0F546CA5}"
const char *g_RegTable[][3] =
{
//format is {key, value name, value }
{ "CLSID\\" CLS_ID, 0, CLS_Name
},
{ "CLSID\\" CLS_ID "\\InprocServer32", 0, (const char*) -1
},
{ "CLSID\\" CLS_ID "\\InprocServer32", "ThreadingModel", "Apartment"
},
{ "CLSID\\" CLS_ID "\\ProgId", 0, CLS_Name
},
{ CLS_Name, 0, CLS_Name
},
{ CLS_Name "\\CLSID", 0, CLS_ID
}
};
BOOL IsExportedSymbol( PHB_DYNS pDyn )
{
if( pDyn->pSymbol >= symbols && pDyn->pSymbol <= symbols +
( sizeof( symbols ) / sizeof(
HB_SYMB ) ) )
{
return TRUE;
}
return FALSE;
}
PHB_SYMB OleServerSymbols( USHORT *puiSymbols )
{
*puiSymbols = (USHORT) ( sizeof( symbols ) / sizeof( HB_SYMB ) );
return symbols;
}
#pragma ENDDUMP
//-------------------------------------------------------------------//
REQUEST HB_GT_NUL
//-------------------------------------------------------------------//
#define DLL_PROCESS_ATTACH 1
#define DLL_PROCESS_DETACH 0
//-------------------------------------------------------------------//
PROCEDURE DllMain( hInstance, nReason )
Local Instance := hInstance
SWITCH nReason
CASE DLL_PROCESS_ATTACH
Vwn_OutputDebugString( "Dll Loaded." )
EXIT
CASE DLL_PROCESS_DETACH
Vwn_OutputDebugString( "Dll UNloaded." )
EXIT
DEFAULT
Vwn_OutputDebugString( "UNEXPECTED nReaon in DllMain!" )
END
RETURN
//-------------------------------------------------------------------//
FUNCTION CreateInstance()
LOCAL oOleServer := Vouch32ActiveX()
ErrorBlock( {|e| Break( e ) } )
Return oOleServer
//-------------------------------------------------------------------//
Procedure GtSys()
Return
//-------------------------------------------------------------------//
#include "hbclass.ch"
#include "common.ch"
#include 'fileio.ch'
//-------------------------------------------------------------------//
CLASS Vouch32ActiveX
METHOD Vouch32Miscll()
METHOD Vouch32SetClientConsole()
METHOD Vouch32ServerPath()
METHOD Vouch32SetLicenseKey()
METHOD Vouch32PrintServer()
METHOD Vouch32CommServer()
METHOD Vouch32GraphicsServer()
METHOD Vouch32TapiServer()
METHOD Vouch32SmsServer()
METHOD Vouch32SmtpServerT() // Tip Based SMTP Server
METHOD Vouch32PopServerT() // Tip Based POP Server
METHOD Vouch32FtpServerT()
METHOD Vouch32ReportServer()
METHOD Vouch32ReportColumn()
METHOD Vouch32PdfServer()
METHOD Vouch32FtpServerI() VIRTUAL
METHOD Vouch32HttpServerI() VIRTUAL
METHOD Vouch32PopServerS() VIRTUAL
METHOD Vouch32ShellServer() VIRTUAL
METHOD Vouch32UtilityServer()
ENDCLASS
//-------------------------------------------------------------------//
METHOD Vouch32SetClientConsole CLASS Vouch32ActiveX
Return V32SetClient( .t. )
//-------------------------------------------------------------------//
METHOD Vouch32ServerPath() CLASS Vouch32ActiveX
Local c
c := Vwn_GetModuleFileName( Vwn_GetModuleHandle() )
c := substr( c,1,rat( '\',c )-1 )
Return c
//-------------------------------------------------------------------//
METHOD Vouch32SetLicenseKey( cKey ) CLASS Vouch32ActiveX
VouchSetLicKey( cKey )
Return Self
//-------------------------------------------------------------------//
METHOD Vouch32PrintServer() CLASS Vouch32ActiveX
Return V32PrintPreview()
//-------------------------------------------------------------------//
METHOD Vouch32CommServer() CLASS Vouch32ActiveX
Return V32CommServer()
//-------------------------------------------------------------------//
METHOD Vouch32GraphicsServer() CLASS Vouch32ActiveX
Return V32Charts()
//-------------------------------------------------------------------//
METHOD Vouch32TapiServer() CLASS Vouch32ActiveX
#ifndef __NOTAPI__
Return V32Tapi()
#else
Return NIL
#endif
//-------------------------------------------------------------------//
METHOD Vouch32SmsServer() CLASS Vouch32ActiveX
Return V32Sms()
//-------------------------------------------------------------------//
METHOD Vouch32PopServerT() CLASS Vouch32ActiveX
Return V32PopServerT()
//-------------------------------------------------------------------//
METHOD Vouch32SmtpServerT() CLASS Vouch32ActiveX
Return V32SmtpServerT()
//-------------------------------------------------------------------//
METHOD Vouch32FtpServerT() CLASS Vouch32ActiveX
Return V32FtpServerT()
//-------------------------------------------------------------------//
METHOD Vouch32ReportServer() CLASS Vouch32ActiveX
Return V32PrintReport()
//-------------------------------------------------------------------//
METHOD Vouch32ReportColumn() CLASS Vouch32ActiveX
Return V32ReportColumn()
//-------------------------------------------------------------------//
METHOD Vouch32Miscll( nMode ) CLASS Vouch32ActiveX
Local xVal
do case
case nMode == 9045
xVal := V320000001()
endcase
Return xVal
//-------------------------------------------------------------------//
METHOD Vouch32PdfServer() CLASS Vouch32ActiveX
Return V32PdfServer()
//-------------------------------------------------------------------//
METHOD Vouch32UtilityServer()
Return V32UtilityServer()
//-------------------------------------------------------------------//
Though I can makeout from olesrv1.prg how to convert,
can you quicky tell me how I construct the hash array to
populate method calls as objects on ole instance ?
-----
enjoy hbIDEing...
Pritpal Bedi
http://hbide.vouch.info/
--
View this message in context:
http://harbour-devel.1590103.n2.nabble.com/SF-net-SVN-harbour-project-14593-trunk-harbour-tp5100733p5100880.html
Sent from the harbour-devel mailing list archive at Nabble.com.
_______________________________________________
Harbour mailing list (attachment size limit: 40KB)
[email protected]
http://lists.harbour-project.org/mailman/listinfo/harbour