以下代码每次都在不同的部分崩溃,原因不同。尝试了一切。我希望能够打电话给#34;睡觉"从lua脚本和多次调用lua函数没有我的C程序必须等待lua完成。在我的例子中,我"模拟"位置x = 100
和y = 200
点击500次鼠标,速度为每毫秒1次点击。
#include <windows.h>
#include <lua.hpp>
struct MouseClick{
lua_State *L;
int x, y;
};
int sleep(lua_State *L)
{
Sleep(lua_tointeger(L, 1));
return 0;
}
void onClicK(lua_State *L, int x, int y)
{
lua_getglobal(L, "onClick");
lua_newtable(L);
lua_pushinteger(L, x); lua_setfield(L, -2, "x");
lua_pushinteger(L, y); lua_setfield(L, -2, "y");
lua_pcall(L, 1, 0, 0);
}
void callThread(LPVOID arg)
{
MouseClick *m = (MouseClick*) arg;
onClicK(m->L, m->x, m->y);
}
int main()
{
lua_State *L = luaL_newstate();
if (luaL_loadfile(L, "test.lua"))
{
printf("Script not loaded.\n");
return 1;
}
luaL_openlibs(L);
lua_register(L, "sleep", sleep);
luaL_dofile(L, "test.lua");
for(int i = 0; i < 500; i++, Sleep(1))
{
MouseClick m = {lua_newthread(L), 100, 200};
CreateThread(0, 0, (LPTHREAD_START_ROUTINE) callThread, &m, 0, 0);
}
getchar();
}
Lua方:
function onClick(c)
print(c.x, c.y)
sleep(3000)
end