Как кто-то может написать «макрос» в C #? - PullRequest
1 голос
/ 19 января 2009

Я кое-что знаю о MACROS. Я не имею в виду язык АССАМБЛЕИ. Я говорю о тех программах, которые вы можете использовать для выполнения действий повторения над другой программой. Я говорю о тех программах, которые вы можете использовать для записи серии событий на вашем компьютере, таких как движения мыши и нажатия кнопок, а затем вы можете воспроизводить их. Некоторые из них достаточно сложны, чтобы работать только с определенным вами приложением.

Я написал один из сортов один раз. Это была программа, которая запускала сеансы Excel, а затем использовала какой-то канал динамического обмена данными для подачи команд сценария сеанса excell. Это сработало.

Но что-то на уровне операционной системы, я думаю, это совсем другая история.

Как кто-то может написать «макрос» в C #?

Я думаю, что подход, который я выберу, заключается в том, чтобы использовать процедуру шпиона, которая поставляется со средой разработки, для получения списка правильных сообщений и параметров (например, wm_lbuttondown), а затем использовать динамический обмен данными для отправки этих сообщений в приложение. .

Итак, у меня три вопроса.

  1. Это лучший способ сделать это?
  2. Как получить дескриптор приложения, которое уже запущено?
  3. Как отправить пользовательские сообщения в приложение, которое уже запущено?

Ответы [ 2 ]

1 голос
/ 19 января 2009

Есть разные ответы, основанные на многих следующих факторах:

  • это третье лицо или ваше собственное приложение?
  • имеет ли он интерфейс автоматизации
  • GUI инструментарий, используемый в приложении

Если это стороннее приложение, то вам нужно работать на уровне Windows API через PInvoke - создание подкласса WinMain proc, захват и отправка входных сообщений и т. Д. Для этой задачи есть сторонняя библиотека. C #, очевидно, не является правильным выбором для такой задачи.

Если приложение имеет модель автоматизации (например, Excel), написать программу, которая будет взаимодействовать с этим приложением, довольно просто.

Если это ваше собственное приложение, которое вы хотите расширить с помощью функциональности макросов, то вы должны принять это во внимание на этапе разработки. Если вы используете шаблон Command с самого начала, то нетрудно запрограммировать запись макросов.

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

О, я почти забыл ответить на эти три вопроса

  1. Это лучший способ сделать это?

Зависит от конкретного сценария

  1. Как получить дескриптор приложения, которое уже запущено?

Зависит от приложения. Если это родное приложение Win, вы можете легко получить идентификатор процесса и дескриптор окна через WinApi.

  1. Как отправить пользовательские сообщения в приложение, которое уже запущено?

Еще раз это зависит от типа приложения. Для родных выигрышных приложений вы можете легко отправлять сообщения WM_XXX через WinAPI

0 голосов
/ 10 июня 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...