СЕТЕВОЙ код для “прослушивания” приложения office (получения событий, вызванных пользователем)

StackOverflow https://stackoverflow.com/questions/892187

Вопрос

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

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

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

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

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

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

PS: Я действительно не хотел бы иметь надстройку Office для достижения этой цели!

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

Это было полезно?

Решение

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

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

Режущая Кромка:Перехваты Windows в .NET Framework

Библиотека MSDN:Функция SetWindowsHookEx Установить windowshookex

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

Другие советы

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top