1,105,340 Community Members

LuaInterface dll in WinForms

Member Avatar
LuaMan
Newbie Poster
6 posts since Nov 2010
Reputation Points: 0 [?]
Q&As Helped to Solve: 0 [?]
Skill Endorsements: 0 [?]
 
0
 

I am trying to make a macro engine for a personal project, and it would work fine, except that the form won't show when I debug it. Take it for granted that I am using the LuaInterface DLL please.

Code:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using LuaInterface;
using System.Runtime.InteropServices;

namespace Lua_Macroez
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            lua.RegisterFunction("MoveMouse", formStuff, formStuff.GetType().
                GetMethod("MoveMouse")); //Registers the mouse moving event
            lua.RegisterFunction("LeftCLick", formStuff, formStuff.GetType().
                GetMethod("LeftClick"));
        }

        [DllImport("User32.dll", SetLastError = true)]
        public static extern int SendInput(int nInputs, ref INPUT pInputs,
                                           int cbSize);

        //mouse event constants
        const int MOUSEEVENTF_LEFTDOWN = 2;
        const int MOUSEEVENTF_LEFTUP = 4;
        //input type constant
        const int INPUT_MOUSE = 0;

        Lua lua = new Lua(); //creates a new lua interpereter
        Form1 formStuff = new Form1(); 


        //This makes the functions that the lua executes later
        public void MoveMouse(int xval, int yval)
        {
            Cursor.Position = new Point(xval, yval);
        }

        public void LeftClick()
        {
            //set up the INPUT struct and fill it for the mouse down
            INPUT i = new INPUT();
            i.type = INPUT_MOUSE;
            i.mi.dx = 0;
            i.mi.dy = 0;
            i.mi.dwFlags = MOUSEEVENTF_LEFTDOWN;
            i.mi.dwExtraInfo = IntPtr.Zero;
            i.mi.mouseData = 0;
            i.mi.time = 0;
            //send the input 
            SendInput(1, ref i, Marshal.SizeOf(i));
            //set the INPUT for mouse up and send it
            i.mi.dwFlags = MOUSEEVENTF_LEFTUP;
            SendInput(1, ref i, Marshal.SizeOf(i));

        }
        //Function creation ends
        
        //struct that contains data for stuff
        public struct MOUSEINPUT
        {
            public int dx;
            public int dy;
            public int mouseData;
            public int dwFlags;
            public int time;
            public IntPtr dwExtraInfo;
        }

        public struct INPUT
        {
            public uint type;
            public MOUSEINPUT mi;
        }

        //structs end

        private void buttonExecute_Click(object sender, EventArgs e)
        {
            lua.DoString(textBox1.ToString());
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

    }
}
Member Avatar
Momerath
Senior Poster
3,822 posts since Aug 2010
Reputation Points: 1,323 [?]
Q&As Helped to Solve: 661 [?]
Skill Endorsements: 19 [?]
Featured
 
1
 

You do realize that formStuff is not the currently active form and is never shown in this code and it is the form you tie lua to?

Member Avatar
LuaMan
Newbie Poster
6 posts since Nov 2010
Reputation Points: 0 [?]
Q&As Helped to Solve: 0 [?]
Skill Endorsements: 0 [?]
 
0
 

Sheeeeit I figured out the problem.

lua.RegisterFunction("MoveMouse", this, this.GetType(). //<-- problem fixed
                GetMethod("MoveMouse")); //Registers the mouse moving event
            lua.RegisterFunction("LeftCLick", this, this.GetType().
                GetMethod("LeftClick"));
Question Answered as of 3 Years Ago by Momerath
You
This question has already been solved: Start a new discussion instead
Post:
Start New Discussion
View similar articles that have also been tagged: