关于powershell:Crazy Demo:多个Microsoft Agent

Crazy Demo: Multiple Microsoft Agents

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

为了便于使用COM,我正在使用PowerShell v2,当前代码如下所示:

1
2
3
4
5
6
7
8
9
10
11
$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!

编辑:我决不是在微软代理上卖的。如果你有更好的方法做同样或相似的事情,我很乐意听到。


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

1
2
3
4
5
6
7
$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")

可以让多个字符相互作用。微软提供了代码演示来展示这一点。

例如:

1
2
3
4
5
6
7
8
9
10
$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")

最后,我使用了一个代理来演示,但它仍然得到了重点。最后一个演示是一个微软代理和.NET语音API背诵了《罗密欧与朱丽叶》的一部分。我相信,如果您使用进程隔离,可能会得到多个进程,但是您需要执行进程同步。