2010-10-30 4 views
13

Мне нужно получить макрос автоматизации как вещь в нашем настольном приложении. Настольное приложение, вероятно, будет в VB.NET или C# .net. Причина заключается в том, чтобы позволить пользователю записывать и воспроизводить определенные задачи, которые они хотели бы автоматизировать. Что-то вроде макросов в офисных приложениях и визуальной студии. Первое, что приходит мне на ум - это VBA.Создайте автоматическую поддержку макросов в приложении

Правильно ли это, есть ли другие варианты?
Любые ошибки или вещи, которые нужно обратить внимание, если какое-то тело уже делало это раньше.
Некоторые полезные ссылки для меня.

Независимо от того, какая небольшая помощь очень ценится.

Спасибо заранее.
Samrat.

P.S. Это довольно общий вопрос, не относящийся к какой-либо конкретной технологии. Если некоторые из вас считают, что теги неприемлемы или нужны еще некоторые теги, которые я пропустил, не стесняйтесь их редактировать :)

+4

и там мои 50 дорогих :( –

+1

Хотя я сторонник ответа на командный шаблон от Филиппа, который я хотел спросить, вы исправлены с использованием VBA или .net для макрокода? Есть множество других встраиваемых языков сценариев там есть LUA (http://www.lua.org/). – Tony

+0

@ Тони - Нет. Я сказал, что VBA - это первое, что я вскочил с ума, так как я был знаком с ним в продуктах Microsoft. Я не знал его практичности для интеграции и других альтернатив, которые существовали. Конечно, на данный момент моя главная цель - автоматизация \ макрозапись, а не полная поддержка языка сценариев. Я рассмотрю LUA. Спасибо за ваше время –

ответ

12

Вы думаете о макросах, которые только для «зачетного повтора» некоторых последовательных действий ? Это может быть довольно неплохо, если вы используете Command pattern в своем пользовательском интерфейсе. Затем каждое действие пользователя описывается объектом (полученным из абстрактного класса Command, имеющего метод «execute()»). Теперь запись и воспроизведение - это просто сохранение списка объектов команд, их сериализация и макрос. Для повторного воспроизведения вы просто десериализуете данные и снова выполняете список команд.

Надеюсь, что это поможет!

+0

Я думаю, что это в основном правильно. VBA будет излишним, если вам не нужен общий язык программирования. Если вы * нуждаетесь в общем языке программирования, просто использование языка .NET будет гораздо меньше, чем найти способ использования VBA. – jtolle

+0

Спасибо Филиппу. Вероятно, я подожду еще несколько дней, чтобы получить еще пару мнений, прежде чем принять это в качестве ответа. Тем не менее я буду, если что-то лучше не появится. Еще раз спасибо! –

+0

@jtolle @samrat Я думаю, что jtolle прав. Интеграция VBA в ваше приложение потребует лицензирования VBA от Microsoft. Раньше это было очень дорого. Я считаю, что в эти дни они больше не поддерживают его в сторонних приложениях. – MarkJ

1

Должно ли оно быть построено в вашем приложении? Есть макро-решения на уровне ОС Windows (при условии, что это ваша цель OS)

+0

Я знаю АХК. Но мне нужно, чтобы это было встроено в приложение, которое нужно запускать в окнах. –

4

VSTA (Visual Studio Tools for Applications) является заменой для VBA. Он не поймал столько же, сколько VBA с сторонними поставщиками или даже с собственными продуктами MSFT (единственное, что в настоящее время имеет это InfoPath). Но это гораздо более современно, чем VBA, если это вызывает беспокойство.

Отъезд VSTA main page, и в частности видео: Integrating VSTA to Enable Macro Recording.

+0

теперь это потрясающе! пройдут через него ... будут ждать еще немного времени, хотя чтобы посмотреть, что другие думают тоже ... похоже, что все-таки стоило 50 кредитов :) Спасибо Otaku –

+1

+1. Раньше я этого не слышал. Следует подчеркнуть, что VSTA не является бесплатным. Кроме того, лично я бы опасался, что Microsoft может отказаться от поддержки в будущем. Я знаю одного крупного поставщика программного обеспечения, ESRI, [используется для использования] (http://blogs.esri.com/Dev/blogs/arcobjectsdevelopment/archive/2009/03/30/VBA-and-VB6_3A00_-The-Road-Ahead .aspx) VBA, но теперь используют Python в качестве своего языка сценариев. Моя догадка (и это только предположение) заключается в том, что ESRI, возможно, принял стратегическое решение избежать будущих решений для сценариев Microsoft, отчасти потому, что они периодически удаляются. Это раздражает конечных пользователей. – MarkJ

+0

.. Другим примером является управляемый JScript. [Представлено Microsoft в 2007 году] (http://blogs.msdn.com/jscript/archive/2007/05/07/introducing-managed-jscript.aspx) как «язык первого класса» в DLR и, полностью сброшен в течение двух лет. Недостаток для [всех, кто его использовал] (http://pietschsoft.com/post/2009/06/12/Managed-JScript-on-the-DLR-from-Microsoft-is-DEAD-Why.aspx) – MarkJ

0

Вы можете использовать Powershell cmdlets.

Выполнение каждого действия, выполняемого вашим графическим интерфейсом, как cmdlet. Затем пользователи могут использовать Powershell для сценария. Я считаю, что это подход, используемый Exchange Server and SQL Server. Конечно, оба предназначены для пользователей sysadmin

0

Поскольку вы сами разрабатываете приложение, вы должны иметь возможность напрямую использовать Windows API для создания (и мониторинга) событий мыши/клавиатуры.

Взгляните на keybd_event, mouse_event и GetCursorPos. Они довольно просты в использовании (я считаю их более прямыми, чем использование SendInput, но это только мое мнение).