我看到一篇很好的文章解释了如何让.net应用程序直接相互通信(http://ryanfarley.com/blog/archive/2004/05/10/605.aspx),但它涉及覆盖WndProc在你的形式中我显然不能在vb6中做的方法。
是否存在可在vb6中使用的任何其他应用程序间通信方法?
我即将在.net中开始一个新项目,但是有一些vb6表单我将无法在需要时立即移植。在考虑了几个不同的设计后,我认为最好让vb6应用程序在后台运行,并且当得到通知时,它可以呈现我需要它的任何表单然后通知.net应用程序表格关闭时。
答案 0 :(得分:4)
有很多选择。如果您更多地了解您的要求,我可以提供更详细的答案。
同时,看一下命名管道:
http://support.microsoft.com/kb/871044
http://msdn.microsoft.com/en-us/library/windows/desktop/aa365590(v=vs.85).aspx
如果您的程序位于不同的服务器上:
http://msdn.microsoft.com/en-us/library/bb546085.aspx
它们是一种可靠的进程间通信方法,不需要任何特定的操作系统设置,可用于.NET和VB6。
答案 1 :(得分:1)
您可以将VB6 EXE设置为ActiveX EXE(COM服务器),然后让.Net组件通过COM interop调用它。即只需add a reference到项目引用对话框的COM选项卡上的VB6 EXE。
或者你可以使用WCF。在.Net中创建一个COM可见的DLL,作为WCF通信的包装器,以便VB6可以参与。您可以使用命名管道:我建议在COM可见DLL中使用内置的.Net support,以便VB6可以调用它。
免责声明:我实际上没有尝试过这个,但它确实应该比从VB6访问命名管道API更简单。