Загрузка...

[HELP] Не работает макрос в моём проекте

Тема в разделе C# создана пользователем Yotic 26 сен 2021. 140 просмотров

  1. Yotic
    Yotic Автор темы 26 сен 2021 Ебашу на C# всё что захотите(Разноцветное) 43 13 янв 2021
    Есть 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);
    }
    }
    }
    В 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);
    }
    }
    }
    Сама проблема - Не работают методы:
    KeyDown(cfg.PressKey);
    KeyUp(cfg.PressKey);
    Программа проходит через них, но нажатия нет...

    И даже разработчик дллки не знает в чём проблема...
    Так же проблема решается если весь код переместить в консольный проект, тогда всё нормально запускается, в моём же проекте ничего не работает...
    Надеюсь что кто-то поймёт в чём ошибка, есди кому-то не понятно - могу отдельно объяснить
     
  2. TheWall_inactive2650523
    TheWall_inactive2650523 26 сен 2021 Waiting for the worms to come 52 23 сен 2019
    Возможно макрос не работает из-за того что он считывает твоё нажатие по клавише только по открытой форме, иначе говоря он не будет реагировать на нажатие w если у тебя не открыто окно gui формы
     
    1. Yotic Автор темы
      TheWall_inactive2650523, Не, я ставлю брекпоинт во внутрь if, и перехожу в майн и нажимаю W
      Он проходит все 3 строки кода, но нажатия нет
Загрузка...
Top