1

我正在为我正在做的演示创建一个极端且有点愚蠢的演示。我希望使用某种类型的 API 来显示多个参与者,并计划使用 Microsoft Agent。Microsoft 代理是否可以同时显示 2 个或更多代理?使用多个线程或进程不是问题,它绝不是漂亮的。

为了使使用 COM 更容易,我正在使用 PowerShell V2,我当前的代码如下所示:

$agent = new-object -com agent.control.2
$agent2 = new-object -com agent.control.2

$agent.connected = 1
$agent2.connected = 1
[void] $agent.characters.load("Merlin")
[void] $agent2.characters.load("Robby")
$merlin = $agent.characters.character("Merlin")
$robby = $agent2.characters.character("Robby")

# Insert silly demo with our actors Merlin and Robby here!

编辑:我绝不会在 Microsoft Agent 上出售。如果您有更好的方法来做相同或类似的事情,我很想听听。

4

2 回答 2

1

最后,我在演示中使用了一个代理,但它仍然明白了这一点。最后的演示是一个 microsoft 代理和 .NET 语音 api,它背诵了罗密欧与朱丽叶的一部分。我相信,如果您使用进程隔离,则可以获得多个,但您需要执行进程同步。

于 2010-12-08T22:51:02.603 回答
1

是的,您可以使用 MSAgent 控件的单个实例加载和显示多个字符。您已经拥有执行此操作所需的代码,只需将其删除$agent2并替换为$agent.

$agent = new-object -com agent.control.2

$agent.connected = 1
[void] $agent.characters.load("Merlin")
[void] $agent.characters.load("Robby")
$merlin = $agent.characters.character("Merlin")
$robby = $agent.characters.character("Robby")

您可以让多个角色相互交互。Microsoft 提供了代码演示来展示这一点。

例如:

$merlin = $agent.characters.character("Merlin")
$robby = $agent.characters.character("Robby")
[void] $merlin.Show()
$req = $merlin.Speak("Robby, where are you?")
[void] $robby.Wait($req)
$req = $robby.Show()
[void] $merlin.Wait($req)
$req = $merlin.Speak("Oh, there you are! How are you today?")
[void] $robby.Wait($req)
[void] $robby.Speak("I am good. Thank you for asking")
于 2017-04-18T21:43:36.787 回答