疯狂演示:多个Microsoft代理

时间:2010-12-07 17:09:52

标签: powershell demo microsoft-agent

我正在为我正在进行的演示创建一个极端而有点愚蠢的演示。我希望使用某种类型的API来显示多个actor,并计划使用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上出售。如果你有更好的方式做同样或类似的事情,我很乐意听到它。

2 个答案:

答案 0 :(得分:1)

最后,我在演示中使用了一个代理程序,但仍然可以解决问题。最后的演示是一个微软代理和.NET演讲api背诵Romeo和Juliet的一部分。我相信,如果您使用进程隔离,则可能会获得多个进程,但是您需要执行进程同步。

答案 1 :(得分: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")