NET-код для «прослушивания» офисного приложения (получения событий, вызванных пользователем) - PullRequest
0 голосов
/ 21 мая 2009

Я нахожусь на грани переделки заявки на электронное обучение. Но теперь я хочу поднять эту новую версию на новый уровень.

Вот такой сценарий: пользователь открывает мое приложение. Затем он / она выбирает обучение одному из самых распространенных приложений MS Office (Word, Excel, Outlook и т. Д.).

Мое приложение даст пользователю инструкции о том, что делать: создать новый документ, ввести текст, повернуть его жирным шрифтом, вставить изображение и т. Д. Если все сделано правильно, пользователь будет награжден баллами. Если нет, то недостатки.

Но (всегда есть но), чтобы достичь этого, я должен иметь возможность «видеть», что делает пользователь. Я использую NET (2.0 - C # или VB, не важно, какой). Может кто-нибудь сказать, как это сделать? Мне нужно получить дескриптор открытого приложения Office или запустить новое, а затем я должен выслушать и оценить все, что делает пользователь. Если пользователь делает это неправильно, мне также необходимо отправить инструкции в приложение Office и сделать это для него. /her.

Возможно ли это? У кого-нибудь есть примеры кода о том, как это сделать или что-то подобное?

Заранее спасибо

PS: Я действительно не хотел бы, чтобы Office дополнял это!

Отредактировано: причина, по которой я не хочу входить в VBA, заключается в том, что я хотел убедиться, что это можно использовать повторно, чтобы помочь пользователям в дальнейшем использовать другие приложения. Поэтому я хотел создать способ прослушивания приложения и расшифровать взаимодействие с ним пользователя.

Ответы [ 2 ]

2 голосов
/ 22 мая 2009

API автоматизации для Office - это COM API. Вы можете вызвать его из управляемого (.NET) кода, но это просто добавляет дополнительный слой и делает вещи значительно более сложными. Я проделал большую работу по автоматизации Office, используя как VB / VBA, так и C #, и, хотя я люблю C # как язык, я должен сказать, что управлять Office намного сложнее. Много . (Легко заставить его работать на вашем компьютере, хотя бы один раз - но не позволяйте этому обмануть вас).

API позволяет вам отлавливать определенные события, такие как выбор меню, нажатия кнопок на панели команд, активацию окна, открытие / закрытие документа и т. Д. Вы также можете отловить событие «выбор изменен», которое теоретически можно использовать для определения что делает пользователь. Но есть много задач прямой манипуляции, которые пользователь может выполнять, которые вы не сможете перехватить (например, перетаскивание, изменение размера изображения и т. Д.), И для ваших целей я бы сказал, что быть большой проблемой.

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

Извините. : - (

1 голос
/ 28 мая 2009

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

Я не буду вам лгать, хотя перехватывать сообщения - довольно сложная тема, но она, безусловно, доступна из .NET. Взгляните на следующую статью MSDN, в которой объясняется, как использовать перехват сообщений в .NET, а затем посмотрите на две ссылки, которые следуют для получения дополнительной информации о WH_CBT.

Передовые возможности: крючки для Windows в .NET Framework

Библиотека MSDN: функция SetWindowsHookEx

Библиотека MSDN: функция CBTProc

...