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控件的单个实例加载和显示多个字符。您已经有了执行此操作所需的代码,只需去掉
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背诵了《罗密欧与朱丽叶》的一部分。我相信,如果您使用进程隔离,可能会得到多个进程,但是您需要执行进程同步。