Есть 2 проекта на win froms 1. Проект - https://github.com/Nekiplay/MAS, для которого было написано dll macros - https://github.com/Nekiplay/MacrosAPI/tree/MacrosAPI/PluginsAPI 2. Мой приват проект, который использует практически такую-же систему Я решил для ознакомления с dll и построения иерархии функций написать самую лёгкую функцию, AutoSprint для майна В 1 проекте реализация - static PluginUpdater pluginUpdater = new PluginUpdater(); private PluginClient pluginClient = new PluginClient(pluginUpdater); private AutoSprintMac sprintMac = new AutoSprintMac(); private void checkBox1_CheckedChanged(object sender, EventArgs e) { if (checkBox1.Checked) { pluginClient.PluginLoad(sprintMac); } else { pluginClient.PluginUnLoad(sprintMac); } } public class AutoSprintMac : Plugin { public AutoSrintSettings settings = new AutoSrintSettings(); public override void Update() { if (IsKeyPressed(Keys.W)) { KeyDown(Keys.ControlKey); Thread.Sleep(settings.delay); KeyUp(Keys.ControlKey); } } } Код static PluginUpdater pluginUpdater = new PluginUpdater(); private PluginClient pluginClient = new PluginClient(pluginUpdater); private AutoSprintMac sprintMac = new AutoSprintMac(); private void checkBox1_CheckedChanged(object sender, EventArgs e) { if (checkBox1.Checked) { pluginClient.PluginLoad(sprintMac); } else { pluginClient.PluginUnLoad(sprintMac); } } public class AutoSprintMac : Plugin { public AutoSrintSettings settings = new AutoSrintSettings(); public override void Update() { if (IsKeyPressed(Keys.W)) { KeyDown(Keys.ControlKey); Thread.Sleep(settings.delay); KeyUp(Keys.ControlKey); } } } В 2(Моём) - static Config cfg = new Config(); internal static PluginClient pc = new PluginClient(new PluginUpdater()); internal static Work asw = new Work(); internal class Config { internal bool enabled = false; internal string Name = "AutoSprint"; internal string Module = "Macros"; internal string Info = "Simple Auto Sprint..."; internal Keys TarggetKey = Keys.W; internal Keys PressKey = Keys.ControlKey; internal int Delay = 25; } internal class Manipulation : IWork { void IWork.Enable() { cfg.enabled = true; pc.PluginLoad(asw); } void IWork.Disable() { cfg.enabled = false; pc.PluginUnLoad(asw); } FlowLayoutPanel IWork.Rendering() { return null; } } internal class Work : Plugin { public override void Update() { if (IsKeyPressed(cfg.TarggetKey)) { KeyDown(cfg.PressKey); Thread.Sleep(cfg.Delay); KeyUp(cfg.PressKey); } } } Код static Config cfg = new Config(); internal static PluginClient pc = new PluginClient(new PluginUpdater()); internal static Work asw = new Work(); internal class Config { internal bool enabled = false; internal string Name = "AutoSprint"; internal string Module = "Macros"; internal string Info = "Simple Auto Sprint..."; internal Keys TarggetKey = Keys.W; internal Keys PressKey = Keys.ControlKey; internal int Delay = 25; } internal class Manipulation : IWork { void IWork.Enable() { cfg.enabled = true; pc.PluginLoad(asw); } void IWork.Disable() { cfg.enabled = false; pc.PluginUnLoad(asw); } FlowLayoutPanel IWork.Rendering() { return null; } } internal class Work : Plugin { public override void Update() { if (IsKeyPressed(cfg.TarggetKey)) { KeyDown(cfg.PressKey); Thread.Sleep(cfg.Delay); KeyUp(cfg.PressKey); } } } Сама проблема - Не работают методы: KeyDown(cfg.PressKey); KeyUp(cfg.PressKey); Программа проходит через них, но нажатия нет... И даже разработчик дллки не знает в чём проблема... Так же проблема решается если весь код переместить в консольный проект, тогда всё нормально запускается, в моём же проекте ничего не работает... Надеюсь что кто-то поймёт в чём ошибка, есди кому-то не понятно - могу отдельно объяснить
Возможно макрос не работает из-за того что он считывает твоё нажатие по клавише только по открытой форме, иначе говоря он не будет реагировать на нажатие w если у тебя не открыто окно gui формы
TheWall_inactive2650523, Не, я ставлю брекпоинт во внутрь if, и перехожу в майн и нажимаю W Он проходит все 3 строки кода, но нажатия нет