为了方便起见,最好安装lua for windows,里面已经包含了很多有用的第三方模块。
require(’luacom’) — luacom
ie = luacom.CreateObject(”InternetExplorer.Application”)
ie:Navigate2(”http://sunxiunan.com”)
ie.Visible = true
使用lua调用excel,然后往cell里面填一些数据。
require(’luacom’) — luacom
– Excelの起動
excel = luacom.CreateObject(”Excel.Application”)
excel.Visible = true — 可視状態に
– ワークブックを追加
local book = excel.Workbooks:Add()
local sheet = book.Worksheets(1)
– 適当な値を100個書き込む
for row=1,100 do
sheet.Cells(row, 1).Value2 = math.floor(math.random() * 20)
end
稍微复杂一些的代码
require “luacom”
excel = luacom.CreateObject(”Excel.Application”)
local book = excel.Workbooks:Add()
local sheet = book.Worksheets(1)
excel.Visible = true
– 適当な値を書き込む
for row=1,30 do
for col=1,30 do
sheet.Cells(row, col).Value2 = math.floor(math.random() * 100)
end
end
– 値を調べて50以上のものを黄色でマークする
local range = sheet:Range(”A1″)
for row=1,30 do
for col=1,30 do
local v = sheet.Cells(row, col).Value2
if v > 50 then
local cell = range:Offset(row-1, col-1)
cell:Select()
excel.Selection.Interior.Color = 65535
end
end
end
excel.DisplayAlerts = false — 終了確認を出さないようにする
excel:Quit()
excel = nil
如果想给excel加个图表该怎么做?
require “luacom”
excel = luacom.CreateObject(”Excel.Application”)
local book = excel.Workbooks:Add()
local sheet = book.Worksheets(1)
excel.Visible = true
for row=1,30 do
sheet.Cells(row, 1).Value2 = math.floor(math.random() * 100)
end
local chart = excel.Charts:Add()
chart.ChartType = 4 — xlLine
local range = sheet:Range(”A1:A30″)
chart:SetSourceData(range)
如果想调用windows api,可以用下面的代码
require “alien”
MessageBox = alien.User32.MessageBoxA
MessageBox:types{ret = ‘long’, abi = ’stdcall’, ‘long’, ’string’,
’string’, ‘long’ }
MessageBox(0, “title for test”, “LUA call windows api”, 0)
如何实现回调函数呢?下面的例子展示了回调。
require ‘alien’
–声明了两个函数EnumWindows和GetClassName
EnumWindows = alien.user32.EnumWindows
EnumWindows:types {”callback”, “pointer”, abi=”stdcall”}
GetClassName = alien.user32.GetClassNameA
GetClassName:types {”long”, “pointer”, “int”, abi=”stdcall” }
local buf = alien.buffer(512)
– 会被EnumWindows反复调用,传入windows的handle
local function enum_func(hwnd, p)
GetClassName(hwnd, buf, 511)
print (hwnd..”:”..tostring(buf))
return 1
end
local callback_func = alien.callback(
enum_func,
{”int”, “pointer”, abi=”stdcall”})
EnumWindows(callback_func, nil)
其中函数原型是
BOOL EnumWindows(WNDENUMPROC lpEnumFunc , LPARAM lParam );
int GetClassName(HWND hWnd , LPTSTR lpClassName , int nMaxCount );
其中EnumWindows第一个参数的原型为,这个函数是客户调用时候传入,EnumWindows用它返回
BOOL CALLBACK EnumWindowsProc(HWND hwnd , LPARAM lParam );
其他复杂的使用方法可以参考alien的文档。
相关推荐
首先,`lua windows调用可执行文件`主要指的是如何在Lua中启动一个外部程序并等待其完成。在Lua中,可以使用os.execute()函数来调用shell命令行,从而执行一个可执行文件。例如: ```lua os.execute("path\\to\\...
在本文中,我们将深入探讨如何在C++程序中集成Lua,实现C++调用Lua函数以及Lua调用C++函数。 一、C++调用Lua函数 1. 配置环境:首先,你需要在C++项目中包含Lua库。确保已经下载并正确安装了Lua,并将其头文件和库...
### Lua 实现调用 WebService 的方法 #### 一、通过 gSOAP 实现 C/C++ 调用 Web Service gSOAP 是一个强大的工具包,它简化了使用 C/C++ 语言开发 Web 服务和客户端的过程。通过 gSOAP 的帮助,我们可以轻松地使用...
至于"点批处理执行",这可能指的是在特定环境下(比如Windows)使用批处理命令(batch file)调用Lua脚本来批量处理多个Excel文件。例如,你可以创建一个批处理文件,循环遍历文件夹中的所有Excel文件,然后调用Lua...
在IT行业中,跨语言交互...总的来说,Lua通过SO调用C++类是一项技术性较强的工作,涉及C++的导出、动态链接库的使用以及Lua的C API。通过这样的集成,我们可以充分利用C++的性能和Lua的易用性,构建高效且灵活的系统。
总结,这个例子展示了 Lua 如何利用 C++ DLL 来扩展其功能,通过 Visual Studio 2010 创建 C++ 接口,并在 Lua 端使用 FFI 进行调用。这个过程涉及到了跨语言调用、动态链接库、C 库接口、异常处理和内存管理等多个...
总结来说,Android与Lua的相互调用是通过集成Lua引擎,注册Java方法供Lua调用,以及在Lua中调用Java方法来实现的。这种混合编程模式在保持开发效率的同时,也能充分利用Lua的灵活性和性能优势。通过分析AndroLua-...
strokeit调用api函数.lua,strokeit调用api函数.lua,strokeit调用api函数.lua,strokeit调用api函数.lua,
本示例探讨了如何在Delphi 7环境中实现与Lua脚本语言的相互调用,这在游戏开发、自动化工具或扩展应用程序功能时非常有用。Delphi是Pascal语言的一个强大的IDE,而Lua则是一种轻量级的脚本语言,以其简洁和可嵌入性...
1. **Lua API**:Lua提供了C接口,允许C或C++程序调用Lua函数,反之亦然。在VS2012中,我们需要包含`lua.h`头文件来使用这些API。 2. **注册C函数到Lua**:为了在Lua中调用C++编写的函数,如`add`,我们需要使用`...
通过上述步骤,你可以在C++中调用Lua模块,利用Lua的灵活性和简洁性来扩展你的应用程序功能。记住,确保Lua和C++的数据类型匹配,以及正确管理堆栈,以避免潜在的问题。在实际开发中,你可能还需要封装更复杂的交互...
9. **WindowsFormsApplication1示例**:这个文件名可能是包含一个Windows Forms应用程序的示例项目,可能展示了如何在.NET的窗体应用中使用LuaInterface调用Lua脚本来控制界面或实现业务逻辑。 通过理解以上知识点...
通过这种方式,你可以灵活地在C++程序中调用Lua脚本来控制文本的显示,而无需更改C++代码。只需修改Lua中的`move`函数,就可以实现不同的文本移动策略,从而提高了代码的可维护性和扩展性。记得在使用完Lua环境后,...
通过这些API,C代码可以创建和控制Lua环境,调用Lua函数,甚至修改Lua环境中的变量。 2. 注册C函数到Lua:使用lua_register或者lua_pushcfunction,C函数可以注册到Lua全局环境中,这样Lua脚本就可以像调用普通Lua...
- 使用LUA C API,如`lua_pushstring`、`lua_setglobal`、`lua_getglobal`等函数,将C++类的方法和属性映射到LUA全局表上。 - 对C++类的构造函数、析构函数、成员函数进行封装,使其能在LUA环境中被调用。 - 在...
总的来说,这个"OC与Lua交互调用(不使用第三方库)Demo"提供了一个基础框架,演示了如何在不依赖外部库的情况下实现Objective-C和Lua的通信。通过自定义的`luaBridge`,开发者可以更好地控制和优化交互过程,同时也...
Lua因其轻量级、易读性及可扩展性而受到青睐,而C++则以其高性能和广泛的功能支持成为底层逻辑的主要实现语言。以下是关于C++与Lua互相调用的详细解释。 一、C++调用Lua脚本 1. **安装Lua库**: 首先,你需要在你的...
通过深入理解Lua C API,你可以自如地在Lua和C之间穿梭,实现高效、稳定且可维护的代码。在提供的压缩文件`cluatest.rar`和`luac.rar`中,可能包含了具体的示例代码和实践教程,供你进一步学习和研究。
在VC项目中引入lua库后,我们可以通过`#include "lua.h"`来包含lua的头文件,这样就可以使用lua提供的API了。这些API允许我们在C/C++代码中加载、执行、注册和操作lua脚本。 对于VC调用lua,一个基本的流程是: 1....
### Lua API及Lua文档知识点概览 #### 一、引言 Lua是一种轻量级、高效且可嵌入的脚本语言,广泛应用于游戏开发、Web应用和其他领域。《Programming in Lua》一书由Lua的主要开发者之一 Roberto Ierusalimschy 撰写...