Version1.0
property access modified: now parameterized properties must be accessed as functions using a
prefixto differentiateproperty readandwrite. Iftheprefixis omitted, a propertygetis assumed;
syntax “obj.Property(param)”is no longer supported. A colon –“:”–must be used:
“ obj:Property(param)”;
better supportfor implementationof COM objects, including registration and event generation;
Type conversion engine rewritten. Now it adheres more firmly to the types specified inthe type
libraries;
bindingrewritten to better support “out”and “in-out”parameters and to adhere more strictly to
the recommended memory allocation policies for COM;
COM objects without type information are now supported.
Version 0.9.2
removal of LUACOM
TRUE and LUACOM
FALSE constants; now booleans follow the same
convention of the C language;
memoryand interface leaks fixed;
some functions of the API have slightly different names;
changes in memory allocation policy, to follow more strictly practices recommended in COM
documentation;
parameter passingpolicies changed;
added limited support for IUnknown pointers;
changes in type conversion;
added limited support for implementing and registering COM objects in Lua
Version 0.9.1
conversion to Lua 4;
better handling of different kinds of type information (e.g. now can access Microsoft Internet
Explorer c
object);
now handles more gracefully exceptions and errors;
added support for optional parameters with default values;
LuaCOM does notinitializes COM libraries anymore; this is left to the user;
morestringent behavior aboutthe syntaxof method callsand propertyaccess (methods with“:”
and properties with “.”).
40
Embed pdf to website - SDK application project:C# PDF Convert to HTML SDK: Convert PDF to html files in C#.net, ASP.NET MVC, WinForms, WPF application
How to Convert PDF to HTML Webpage with C# PDF Conversion SDK
www.rasteredge.com
Embed pdf to website - SDK application project:VB.NET PDF Convert to HTML SDK: Convert PDF to html files in vb.net, ASP.NET MVC, WinForms, WPF application
PDF to HTML Webpage Converter SDK for VB.NET PDF to HTML Conversion
www.rasteredge.com
Chapter 6
Reference
6.1 The C/C++ API
luacom
open
Prototype
void luacom_open(lua_State* L);
Description
This function initializes the LuaCOM library, creates the global luacom table and fills it with
LuaCOM methods in the given Lua state. Notice that it’s necessary to initialize COM before, us-
ing OleInitialize or CoInitialize or somethinglike that.
Sample
int main()
{
lua_State *L = lua_open(0);
OleInitialize(NULL);
luacom_open(L);
.
.
.
}
luacom
close
Prototype
void luacom_close(lua_State* L);
41
SDK application project:VB.NET PDF Convert to Images SDK: Convert PDF to png, gif images
Embed PDF to image converter in viewer. the API, sample codes are provided for PDF document to Our website offers PDF to Raster Images Conversion Control for VB
www.rasteredge.com
SDK application project:C# Image: How to Integrate Web Document and Image Viewer
RasterEdgeImagingDeveloperGuide8.0.pdf: from this user manual, you can existing one from where the website is ready Embed Document Viewer to Your ASPX Web Page.
www.rasteredge.com
Description
This function is intended to clean up the data structures associated with LuaCOM in a specific Lua
state (L). Currently, it does nothing, but in future releases it will do. So, do not remove from
your code! It must be also called before the COM termination functions (OleUninitialize and
CoInitialize) and before lua
close.
Sample
int main()
{
lua_State *L = lua_open(0);
OleInitialize(NULL);
luacom_open(L);
.
.
.
luacom_close(L);
lua_close(L);
OleUninitialize();
}
luacom
detectAutomation
Prototype
int luacom_detectAutomation(lua_State *L, int argc, char *argv[]);
Description
This function gets fromthetopof the Lua stack a tablewhichshouldhold two fields named“StartAu-
tomation”and “Register”(these fields should contain functions that implement these actions). Then
it searches the command line (provided argc and argv) for the switches “/Automation”or “/Reg-
ister”. If one of these switches is found, it then calls the corresponding function in the Lua table.
Finally itreturns a value telling what happened, so thecaller function may change its course of action
(if needed).
Thisfunctionissimplyahelper forthoseimplementingAutomationservers usingLuaCOM. Most
of the work should be done by the Lua code, using the methods RegisterObject, NewObject,
and ExposeObject.
42
SDK application project:VB.NET Word: VB Code to Create Word Mobile Viewer with .NET Doc
prorgam, please link to see: PDF Document Mobile RasterEdge_Imaging_Files" to your created website folder Embed "RasterEdge.css" and "RasterEdge.js" references
www.rasteredge.com
SDK application project:VB.NET Image: VB Code to Download and Save Image from Web URL
this, you can instantly and quickly embed required RasterEdge users to download image from website link more & profession imaging controls, PDF document, image
www.rasteredge.com
Sample
/*
* com_object.cpp
*
* This sample C++ code initializes the libraries and
* the COM engine to export a COM object implemented in Lua
*/
#include <ole2.h>
// libraries
extern "C"
{
#include <lua.h>
#include <lualib.h>
}
#include <luacom.h>
int main (int argc, char *argv[])
{
int a = 0;
CoInitialize(NULL);
IupOpen();
lua_State *L = lua_open(0);
lua_baselibopen (L);
lua_strlibopen(L);
lua_iolibopen(L);
luacom_open(L);
lua_dofile(L, "implementation.lua");
// Pushes the table containing the functions
// responsible for the initialization of the
// COM object
lua_getglobal(L, "COM");
// detects whether the program was invoked for Automation,
// registration or none of that
int result = luacom_detectAutomation(L, argc, argv);
43
SDK application project:C# PDF url edit Library: insert, remove PDF links in C#.net, ASP.
embed link to specific PDF pages. Easy to put link into specified position of PDF text, image and PDF table. Link access to variety of objects, such as website,
www.rasteredge.com
SDK application project:VB.NET PDF url edit library: insert, remove PDF links in vb.net
Able to embed link to specific PDF pages in VB Extract and search url in existing PDF file in VB access to variety of objects, including website, image, document
www.rasteredge.com
switch(result)
{
case LUACOM_AUTOMATION:
// runs the message loop, as all the needed initialization
// has already been performed
MessageLoop();
break;
case LUACOM_NOAUTOMATION:
// This only works as a COM server
printf("Error. This is a COM server\n");
break;
case LUACOM_REGISTER:
// Notifies that the COM object has been
// registered
printf("COM object successfully registered.");
break;
case LUACOM_AUTOMATION_ERROR:
// detectAutomation found /Automation or /Register but
// the initialization Lua functions returned some error
printf("Error starting Automation");
break;
}
luacom_close(L);
lua_close(L);
CoUninitialize();
return 0;
}
-------
-- implementation.lua
--
--
This is a sample implementation of a COM server in Lua
--
-- This is the implementation of the COM object
TestObj = {}
function TestObj:showWindow()
dialog.show()
end
44
SDK application project:C# TIFF: C#.NET Code to Create Online TIFF Document Viewer
how to create more web viewers on PDF and Word Create an ASP.NET website in Visual Studio 2005 or any If you want to embed .NET Web TIFF Document Viewer DLL
www.rasteredge.com
SDK application project:C# PowerPoint: Create Web Document Viewer for PowerPoint Viewing
and saving web PowerPoint document to PDF and TIFF. a web application and then add and embed Web PowerPoint C# Guide: Setup an ASP.NET Website in Visual Studio.
www.rasteredge.com
function TestObj:hideWindow()
dialog.hide()
end
-- Here we create and populate the table to
-- be used with detectAutomation
COM = {}
-- This functions creates the COM object to be
-- exported and exposes it.
function COM:StartAutomation()
-- creates the object using its default interface
COMAppObject, events, e = luacom.NewObject(TestObj, "TESTE.Teste")
-- This error will be caught by detectAutomation
if COMAppObject == nil then
error("NewObject failed: "..e)
end
-- Exposes the object
cookie = luacom.ExposeObject(COMAppObject)
if cookie == nil then
error("ExposeObject failed!")
end
end
function COM:Register()
-- fills table with registration information
local reginfo = {}
reginfo.VersionIndependentProgID = "TESTE.Teste"
reginfo.ProgID = reginfo.VersionIndependentProgID..".1"
reginfo.TypeLib = "teste.tlb"
reginfo.CoClass = "Teste"
reginfo.ComponentName = "Test Component"
reginfo.Arguments = "/Automation"
-- stores component information in the registry
local res = luacom.RegisterObject(reginfo)
if res == nil then
error("RegisterObject failed!")
end
end
function COM:UnRegister()
-- fills table with registration information
local reginfo = {}
reginfo.VersionIndependentProgID = "TESTE.Teste"
reginfo.ProgID = reginfo.VersionIndependentProgID..".1"
45
reginfo.TypeLib = "teste.tlb"
reginfo.CoClass = "Teste"
-- removes component information from the registry
local res = luacom.UnRegisterObject(reginfo)
if res == nil then
error("UnRegisterObject failed!")
end
end
luacom
IDispatch2LuaCOM
Prototype
int luacom_IDispatch2LuaCOM(lua_State *L, void *pdisp_arg);
Description
This functions takes a pointer to IDispatch, creates a LuaCOM object for it and pushes it in the
Lua stack. This function is useful when one gets an interface for a COM object from C/C++ code
and wants to use it in Lua.
Sample
void CreateAndExport(lua_State* L)
{
// Creates the object
IUnknown *obj = CreateObj();
// Gets the IDispatch
IDispatch* pdisp = NULL;
QueryInterface(IID_IDISPATCH, &pdisp);
// pushes onto lua stack
luacom_IDispatch2LuaCOM(L, (void *) pdisp);
}
6.2 The Lua Standard API
CreateObject
Use
luacom_obj = luacom.CreateObject(ID, creation_context, untyped)
Description
This method finds the Class ID referenced by the ID parameter and creates an instance of the object
with this Class ID. If there is any problem (ProgID not found, error instantiating object), the method
46
returns nil.
Parameters
Parameter
Type
ProgID
String
Return Values
Return Item
Possible Values
luacom
obj
LuaCOM object
nil
Sample
inet_obj = luacom.CreateObject("InetCtls.Inet")
if inet_obj == nil then
print("Error! Object could not be created!")
end
Connect
Use
implemented_obj, cookie = luacom.Connect(luacom_obj, implementation_table)
Description
This method finds the default source interface of the object luacom_obj, creates an instance of
this interface whose implementation is given by implementation_table and creates a connec-
tion point between the luacom_obj and the implemented source interface. Any calls made by
the luacom_obj to the source interface implementation will be translated to Lua calls to member
function present in the implementation_table. If the method succeeds, the LuaCOM object
implemented by implementation_table, plus a cookie that identifies the connection, are re-
turned; otherwise, nil is returned.
Notice that, to receive events, it’s necessary tohave a Windows message loop.
Parameters
Parameter
Type
luacom_obj
LuaCOM object
implementation_table
Table or userdata
Return Values
ReturnItem
Possible Values
implemented
obj
LuaCOM object
nil
cookie
number
47
Sample
events_handler = {}
function events_handler:NewValue(new_value)
print(new_value)
end
events_obj = luacom.Connect(luacom_obj, events_handler)
ImplInterface
Use
implemented_obj = luacom.ImplInterface(impl_table, ProgID, interface_name)
Description
This method finds the type library associated with the ProgID and tries to find the type information
of an interface called “interface
name”. If it does, then creates an object whose implementation is
“impl
table”, that is, any method call or property access on this object is translated to calls or access
on the members of the table. Then it makes a LuaCOM object for the implemented interface and
returns it. If there are any problems in the process (ProgID not found, interface not found, interface
isn’ta dispinterface), the method returns nil.
Parameters
Parameter
Type
impl_table
table or userdata
ProgID
string
interface_name
string
Return Values
ReturnItem
Possible Values
implemented
obj
LuaCOM object
nil
Sample
myobject = {}
function myobject:MyMethod()
print("My method!")
end
myobject.Property = "teste"
luacom_obj = luacom.ImplInterface(myobject, "TEST.Test", "ITest")
-- these are done via Lua
myobject:MyMethod()
print(myobject.Property)
-- this call is done through COM
48
luacom_obj:MyMethod()
print(luacom_obj.Property)
ImplInterfaceFromTypelib
Use
impl_obj = luacom.ImplInterfaceFromTypelib(
impl_table,
typelib_path,
interface_name,
coclass_name)
Description
This methodloads the type librarywhose file pathis “typelib
path”and tries to find the type informa-
tion of an interface called “interface
name”. If it does, then creates an object whose implementation
is “impl
table”,thatis, anymethod callor property access onthis objectis translated tocalls or access
on the members of the table. Then it makes a LuaCOM object for the implemented interface and re-
turns it. If there are any problems intheprocess (ProgID notfound, interface not found,interfaceisn’t
adispinterface), the method returns nil. The “coclass
name”parameter is optional; it is only
needed if the resultingLuaCOM object is tobe passed tothe methods Connect, AddConnection
or ExposeObject. This parameter specifies the Component Object class name to which the inter-
face belongs, as one interface may be used in more than one “coclass”.
Parameters
Parameter
Type
impl_table
table or userdata
typelib_path
string
interface_name
string
coclass_name
(optional) string
Return Values
ReturnItem
Possible Values
implemented
obj
LuaCOM object
nil
Sample
myobject = {}
function myobject:MyMethod()
print("My method!")
end
myobject.Property = "teste"
luacom_obj = luacom.ImplInterfaceFromTypelib(myobject, "test.tlb",
"ITest", "Test")
49
Documents you may be interested
Documents you may be interested