我试图在vba应用程序(幻灯片中的powerpoint)和我写的.net应用程序之间传递消息。
我能想到的唯一方法是发送击键。
但是,此方法会导致powerpoint失去焦点。
你能建议一个解决方案吗?
答案 0 :(得分:1)
如果所有这些都发生在同一台机器上,最简单的方法可能是让PPT将其状态写入注册表,而另一个应用程序将其读出(GetSetting(), SaveSetting()
)。
如果PTT和其他进程在不同的机器上运行,您可以考虑将状态写入一个可以异步读出的小文本文件。
不同计算机上两个进程/应用程序之间的另一种(同步)通信方式是使用sockets并通过网络发送信息。
答案 1 :(得分:0)
我在vba和.net之间找到了一种有趣的通信方式,没有文件系统操作,套接字或外部对象。
首先,我们注册了powerpoint evets:
http://www.vbaexpress.com/kb/getarticle.php?kb_id=327
其次,我们在演示开始事件中更新VBA中的剪贴板:
http://word.mvps.org/faqs/macrosvba/ManipulateClipboard.htm
第三,我们在.net上使用剪贴板监听器:
How do I monitor clipboard content changes in C#?
最后,我们在presentation-end事件
上恢复原始剪贴板值