0

我即将重新制作电子学习应用程序。但现在我想把这个新版本提升到一个新的水平。

所以这是场景:用户打开我的应用程序。然后,他/她选择接受最常见的 MS Office 应用程序之一(Word、Excel、Outlook 等)的培训。

我的应用程序将向用户提供操作说明:创建一个新文档、输入一些文本、将其变为粗体、插入图片等。如果操作正确,用户将获得积分。如果不是,记过。

但是(总是有一个但是)要我做到这一点,我必须能够“看到”用户在做什么。我正在使用 NET(2.0 - C# 或 VB,无所谓)。谁能告诉如何做到这一点?我需要处理打开的 Office 应用程序或启动一个新应用程序,然后我必须倾听并评估用户所做的一切。如果用户做错了,我还需要向 Office 应用程序发送说明并为他做/她。

这可能吗?有没有人有一些关于如何执行此操作或类似操作的代码示例?

提前致谢

PS:我真的不想有一个Office插件来完成这个!

编辑:我不想进入 VBA 的原因是我想确保它是可重用的,以帮助用户进一步使用其他应用程序。所以我想要一些方法来创建一个应用程序的监听器并解码用户与它的交互。

4

2 回答 2

2

Office 的自动化 API 是一个 COM API。您可以从托管 (.NET) 代码中调用它,但这只是增加了一个额外的层并使事情变得更加复杂。我使用 VB/VBA 和 C# 完成了大量的 Office 自动化工作,虽然我喜欢 C# 作为一种语言,但我不得不说,以这种方式驱动 Office 要困难得多。很多。(很容易让它在你的机器上工作,至少一次 - 但不要让它愚弄你)。

API 确实允许您捕获某些事件,例如菜单选择、命令栏按钮单击、窗口激活、文档打开/关闭等。您还可以捕获“选择更改”事件,理论上您可以使用它来确定用户的内容是在做。但是,用户可以执行许多您无法捕获的直接操作任务(例如拖放、调整图片大小等),出于您的目的,我想说的是成为一个大问题。

我不得不说我非常怀疑你是否能够按照你的建议去做——至少,还不足以让它变得无缝。而且我认为考虑到您的用户群,它必须非常防弹。

对不起。:-(

于 2009-05-21T20:28:30.520 回答
1

实际上有一个为基于计算机的培训应用程序设计的 Windows 钩子,称为 WH_CBT,它在窗口被激活、最小化、移动、调整大小、执行命令、鼠标/键盘事件等时提供通知。

不过,我不会对您撒谎,挂钩是一个相当复杂的主题,但在 .NET 中肯定是可以理解的。请查看以下 MSDN 文章,该文章解释了如何在 .NET 中使用消息挂钩,然后查看以下两个链接以获取有关 WH_CBT 的更多信息。

前沿:.NET 框架中的 Windows 挂钩

MSDN 库:SetWindowsHookEx 函数

MSDN 库:CBTProc 函数

于 2009-05-28T05:36:46.997 回答