77 lines
1.9 KiB
Lua

require("luacom")
local obj = {}
function obj:Sum(i1, i2)
print("Calling Sum...",i1,i2)
return i1 + i2
end
function obj:I2A(i1)
print("Calling I2A...",i1)
return tostring(i1)
end
function obj:IntDivide(i1, i2)
print("Calling IntDivide...",i1,i2)
quot, rest = {}, {}
quot.Type = "int"
quot.Value = math.floor(i1/i2)
rest.Type = "int"
rest.Value = math.mod(i1, i2)
return quot, rest
end
local COM = {}
local COMAppObject, events, e, cookie
function COM:StartAutomation()
print("Starting server...")
-- creates the object using its default interface
COMAppObject, events, e = luacom.NewObject(obj, "testlua.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 = "testlua.Teste"
reginfo.ProgID = reginfo.VersionIndependentProgID..".1"
reginfo.TypeLib = "testlua.tlb"
reginfo.CoClass = "Teste"
reginfo.ComponentName = "Test Component"
reginfo.Arguments = "/Automation"
reginfo.ScriptFile = "inproc.lua"
-- 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 = "testlua.Teste"
reginfo.ProgID = reginfo.VersionIndependentProgID..".1"
reginfo.TypeLib = "testlua.tlb"
reginfo.CoClass = "Teste"
-- deletes component information from the registry
local res = luacom.UnRegisterObject(reginfo)
if res == nil then
error("UnRegisterObject failed!")
end
end
return luacom.DetectAutomation(COM)