Boris,
If you struggle getting a PLUGIN to work, just create a standard Win32 DLL
with exported functions and call them using the DLCall function. I think it
will be a much simpler approach for you. There is plenty of help in the
helpfile on this to get you started. You can salvage most of the code you
have already included here. Just drop all the standard PLUGIN stuff.
LoadLibrary is called automatically from RBase the first time you call an
exported function in the DLL.
----- Original Message -----
From: <[email protected]>
To: "RBASE-L Mailing List" <[email protected]>
Sent: Wednesday, November 04, 2009 9:19 PM
Subject: [RBASE-L] - Plugins...
I am trying to write Plugin for Rbase Turbo-8
Unfortunately it does not work
I run command PLUGINS rblmodule.rbl
but I do not see no results of plugin been loaded.
Can please anybody gimme any pointers or may be something I am doing
obviosly wrong,
here is my plugin source code:
// rblmodule.cpp : Defines the entry point for the DLL application.
//
#include "stdafx.h"
"stdafx.h"
#include "rblmodule.h"
"rblmodule.h"
#include "resource.h"
"resource.h"
#include "boris_log.hpp"
"boris_log.hpp"
#define RBL_PLUGIN_NAME "SDNA"
RBL_PLUGIN_NAME "SDNA"
#define RBL_PLUGIN_TYPE 101
RBL_PLUGIN_TYPE 101
#ifdef _MANAGED
_MANAGED
#pragma managed(push, off)
#endif
static HINSTANCE myInstanceHandle = NULL ;
BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
{
myInstanceHandle = hModule ;
boris_log( "DLL-ATTACH\n" );
};
break;
}
return TRUE;
}
HINSTANCE myInstanceHandle = NULL ;
BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
{
myInstanceHandle = hModule ;
boris_log( "DLL-ATTACH\n" );
};
break;
}
return TRUE;
}
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
{
myInstanceHandle = hModule ;
boris_log( "DLL-ATTACH\n" );
};
break;
}
return TRUE;
}
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
{
myInstanceHandle = hModule ;
boris_log( "DLL-ATTACH\n" );
};
break;
}
return TRUE;
}
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
{
myInstanceHandle = hModule ;
boris_log( "DLL-ATTACH\n" );
};
break;
}
return TRUE;
}
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
{
myInstanceHandle = hModule ;
boris_log( "DLL-ATTACH\n" );
};
break;
}
return TRUE;
}
case DLL_PROCESS_DETACH:
{
myInstanceHandle = hModule ;
boris_log( "DLL-ATTACH\n" );
};
break;
}
return TRUE;
}
"DLL-ATTACH\n" );
};
break;
}
return TRUE;
}
break;
}
return TRUE;
}
return TRUE;
}
#ifdef _MANAGED
_MANAGED
#pragma managed(pop)
#endif
// This is an example of an exported variable
RBLMODULE_API int nrblmodule=0;
int nrblmodule=0;
// This is an example of an exported function.
RBLMODULE_API int fnrblmodule(void)
{
return 42;
}
int fnrblmodule(void)
{
return 42;
}
return 42;
}
// This is the constructor of a class that has been exported.
// see rblmodule.h for the class definition
Crblmodule::Crblmodule()
{
return;
}
return;
}
// procedure GetRBPluginName(Value : PChar); stdcall;
RBLMODULE_API void __stdcall GetRBPluginName( char* plugin_name_out )
{
boris_log( "GetRBPluginName\n" );
strcpy( plugin_name_out , RBL_PLUGIN_NAME );
MessageBox( GetActiveWindow(),"Zdes bil Vasys.",
"RBLMODULE.RBL....GetRBPluginName" , MB_OK );
}
void __stdcall GetRBPluginName( char* plugin_name_out )
{
boris_log( "GetRBPluginName\n" );
strcpy( plugin_name_out , RBL_PLUGIN_NAME );
MessageBox( GetActiveWindow(),"Zdes bil Vasys.",
"RBLMODULE.RBL....GetRBPluginName" , MB_OK );
}
"GetRBPluginName\n" );
strcpy( plugin_name_out , RBL_PLUGIN_NAME );
MessageBox( GetActiveWindow(),"Zdes bil Vasys.",
"RBLMODULE.RBL....GetRBPluginName" , MB_OK );
}
"Zdes bil Vasys.",
"RBLMODULE.RBL....GetRBPluginName" , MB_OK );
}
"RBLMODULE.RBL....GetRBPluginName" , MB_OK );
}
// function GetRBPluginType : integer; stdcall;
RBLMODULE_API int __stdcall GetRBPluginType()
{
boris_log( "GetRBPluginType\n" );
MessageBox( GetActiveWindow(),"Zdes bil Vasys.",
"RBLMODULE.RBL....GetRBPluginType" , MB_OK );
return RBL_PLUGIN_TYPE ;
}
int __stdcall GetRBPluginType()
{
boris_log( "GetRBPluginType\n" );
MessageBox( GetActiveWindow(),"Zdes bil Vasys.",
"RBLMODULE.RBL....GetRBPluginType" , MB_OK );
return RBL_PLUGIN_TYPE ;
}
"GetRBPluginType\n" );
MessageBox( GetActiveWindow(),"Zdes bil Vasys.",
"RBLMODULE.RBL....GetRBPluginType" , MB_OK );
return RBL_PLUGIN_TYPE ;
}
"Zdes bil Vasys.",
"RBLMODULE.RBL....GetRBPluginType" , MB_OK );
return RBL_PLUGIN_TYPE ;
}
"RBLMODULE.RBL....GetRBPluginType" , MB_OK );
return RBL_PLUGIN_TYPE ;
}
return RBL_PLUGIN_TYPE ;
}
// function StartRBPlugin(Params : PChar) : PChar; stdcall;
RBLMODULE_API char* __stdcall StartRBPlugin( char* params )
{
boris_log( "StartRBPlugin\n" );
MessageBox( GetActiveWindow(),"Zdes bil Vasya.",
"RBLMODULE.RBL....StartRBPlugin" , MB_OK );
return 0 ;
}
char* __stdcall StartRBPlugin( char* params )
{
boris_log( "StartRBPlugin\n" );
MessageBox( GetActiveWindow(),"Zdes bil Vasya.",
"RBLMODULE.RBL....StartRBPlugin" , MB_OK );
return 0 ;
}
"StartRBPlugin\n" );
MessageBox( GetActiveWindow(),"Zdes bil Vasya.",
"RBLMODULE.RBL....StartRBPlugin" , MB_OK );
return 0 ;
}
"Zdes bil Vasya.",
"RBLMODULE.RBL....StartRBPlugin" , MB_OK );
return 0 ;
}
"RBLMODULE.RBL....StartRBPlugin" , MB_OK );
return 0 ;
}
return 0 ;
}
// function GetGetBitmap : THandle; stdcall;
RBLMODULE_API HBITMAP __stdcall GetGetBitmap()
{
HBITMAP ret = LoadBitmap( myInstanceHandle, MAKEINTRESOURCE(IDB_BITMAP1) );
return ret ;
}
__stdcall GetGetBitmap()
{
HBITMAP ret = LoadBitmap( myInstanceHandle, MAKEINTRESOURCE(IDB_BITMAP1) );
return ret ;
}
return ret ;
}