2010-01-27 2 views
3

В приложении C# WinForms (на .NET 3.5, возможно, 4.0 в ближайшее время), как бы вы могли позволить пользователю определить свои собственные макросы? Например, пользователь может захотеть, чтобы клавиша нажала CTRL + K, чтобы означать щелчок на определенном элементе в меню и ввод текста в открывшемся меню, прежде чем нажимать «Ok», чтобы закрыть диалог.Библиотеки макросов C# GUI или общие подходы?

В идеале наше программное обеспечение может обеспечить функцию макрозаписи, которая позволит пользователю только начать запись, выполнить требуемые задачи и остановить запись, чтобы иметь доступный макрос. Эта функция, с которой они привыкли использовать старую версию программного обеспечения, которая была написана в FoxPro, является инструментом, который обладает такими возможностями.

Лучшим вариантом для нас было бы, очевидно, приобретение и использование проверенной и проверенной сторонней библиотеки, но идеи для продвижения нашей собственной версии также приветствуются.

ответ

0

У меня есть хороший опыт работы с «шаблоном проектирования команд» для макрозаписывающей функциональности. Каждая команда запускает какое-то приложение (статическое, например) событие с информацией параметров abou и т. Д. Рекордер прослушивает это событие и сохраняет последовательность вызова команды.

1

Если я работал над чем-то подобным, я мог бы интегрировать обработчик событий общего назначения для регистрации событий, которые вы хотите записывать (возможно, либо в качестве отдельного обработчика, добавленного к доступным кнопкам, либо путем создания класса RecordedEventHandler для расширения EventHandler а затем подклассифицируем все ваши обработки событий из этого - это просто лучшие идеи, поэтому я не смотрел, что будет наиболее жизнеспособным) и просто используйте кнопку «запись макроса» в качестве переключателя для этого. Вероятно, есть только несколько различных типов событий, которые необходимо записать: нажатие кнопок, ввод клавиатуры в любые текстовые поля, сочетания клавиш и ввод мыши на любых полях ввода мыши, поэтому это не чрезвычайно сложная задача, хотя, конечно, как хранить и связывать макросы и как облегчить импорт и экспорт, если вы были склонны к этому, требует много времени, но не технически сложно. Я не знаю ни одной библиотеки для этой цели (хотя я ожидаю, что некоторые существуют) и думаю об этом. Я не уверен, насколько легко было бы интегрировать что-то подобное, потому что потребности большинства людей в макросах, вероятно, будут другой.

Если вам необходимо регистрировать события вокруг приложения, вы можете найти ManagedWinApi, чтобы быть полезным.

Смежные вопросы