Winform использует lua для управления мышью

Я пытаюсь использовать мышь Logitech для отправки строки, например, logitech предоставляет программное обеспечение для выполнения
введите описание изображения здесь

Я нажимаю кнопку «Вперед», он отправляет строку, но я не могу использовать winform для отправки строки для ее изменения

Я обнаружил, что у logitech есть G-series Lua API

Я пытаюсь использовать функцию OnEvent для управления щелчком мыши для отправки строки

Но я никогда раньше не использовал Lua.

Вот мой код С #

using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using LuaInterface;
namespace LuaScript
{
    public partial class Form1 : Form
    {
        public Lua lua = new Lua();
        string var = "aabbcc";
        public Form1()
        {
            InitializeComponent();
            lua.DoFile("logitechSendString.lua");
            object[] objs = lua.GetFunction("OnEvent").Call(this, var);
            lua.Close();
        }
    }
}

Мой код lua

function OnEvent(event, arg)
  if (arg!=null)then
    PressKey(arg) 
    ReleaseKey(arg)
    Sleep(50)
    PressMouseButton("Forward")
    ReleaseMouseButton("Forward")
  end
end

Но это ошибка

System.IO.FileLoadException
  HResult=0x80131621
  Message=Mixed mode assembly is built against version 'v2.0.50727' of the runtime and cannot be loaded in the 4.0 runtime without additional configuration information.
  Source=LuaInterface
  StackTrace: 
   LuaInterface.Lua..ctor()
   LuaScript.Form1..ctor()  D:\Visual Studio\LuaScript\LuaScript\Form1.cs: 15
   LuaScript.Program.Main()  D:\Visual Studio\LuaScript\LuaScript\Program.cs:19

Как решить эту ошибку?

И как использовать lua для управления мышью?

Спасибо


person 5407    schedule 23.02.2020    source источник
comment
API Lua серии G доступен только для сценариев Lua, работающих внутри Logitech Gaming Software. Этот API недоступен из внешних программ (например, из вашей программы на C #).   -  person Egor Skriptunoff    schedule 23.02.2020
comment
Чтобы имитировать mouse button #5 X2(Forward) нажатие и отпускание, вам вообще не нужен Lua. Это можно было сделать изначально на C #.   -  person Egor Skriptunoff    schedule 23.02.2020
comment
Если вы просто хотите имитировать ввод какого-либо сообщения при нажатии кнопки мыши Forward, вам необходимо создать макрос в Logitech Gaming Software (нажмите на значок плюса рядом с полем «Команды» на изображении). Привяжите созданный макрос к кнопке мыши, перетащив его имя.   -  person Egor Skriptunoff    schedule 23.02.2020
comment
Привет, Evor, спасибо за ответ. Я пытаюсь использовать sg300, потому что он содержит память, в которой может храниться строка из winform. Мне она нужна только для хранения строки и отправки щелчком мыши, или я могу просто имитировать щелчок и отправку строки.   -  person 5407    schedule 23.02.2020


Ответы (1)


Это решение без C #.
Строка aabbcc хранится в скрипте LGS.
В подменю вашего профиля выберите Scripting и скопируйте этот сценарий Lua:

-- when user presses middle mouse button, the following happens:
--   1. string "aabbcc" typing is simulated
--   2. "Forward" (X2) mouse button press and release simulated
function OnEvent(event, arg, family)
   if event == "MOUSE_BUTTON_PRESSED" and arg == 3 then  -- middle mouse button pressed
      PressAndReleaseKey("a", "a", "b", "b", "c", "c")   -- change your string here
      Sleep(50)           -- 50 ms wait
      PressMouseButton(5) -- 5 = X2(Forward)
      Sleep(50)
      ReleaseMouseButton(5)
   end
end

Чтобы заменить строку aabbcc на другую, нужно снова перейти в пункт меню «Сценарий», изменить текст и сохранить его (Ctrl-S).

person Egor Skriptunoff    schedule 23.02.2020