繁体   English   中英

c#应用程序如何调用带有UI的外部windows应用程序?

[英]How to call an external windows application with UI by a c# application?

我们有一个带有 GUI 的程序 ( A.exe ) 和一个工具栏,它用一些文本来做 NLP 的东西。 在该工具栏中,我们有function A ,它通过添加一些 xml 标签来转换文本。 这里有人(老板)希望我创建一个 Web 服务调用function A 它告诉我动态数据交换(他几年前用过),我看到了类似SendMessage的东西。

Web 服务将被某些人通过 Inte.net 使用:发送文本并获得xml的结果。 GUI程序在有人调用WS时无法启动,因为太慢了,所以有人建议一次性启动这个A.exe ,WS会通过DDE调用来询问这个A.exe 我不知道A.exe在并发调用的情况下会如何反应。

Web 服务将:

  1. 将文本文件保存在目录中
  2. 调用A.exe
  3. A.exe将计算文本文件并创建 xml 文件
  4. WS 将循环直到 xml 文件存在
  5. WS 将获得 xml 并将其作为 stream 发送给原始呼叫者

我想指出:

  1. DDE 很旧,似乎需要一个支持 DDE 服务器的程序。
  2. SendMessage 有点晦涩,因为我是 Java 开发人员。
  3. 我没有尝试命名或匿名管道按照建议进行调用。

谢谢你。

PS:用UI调用服务端程序构建WS是邪教吧?

这个问题的答案实际上取决于您要完成的任务。 您的 function 是否更改来自外部数据源(例如数据库)的数据,或者您是否在应用程序中调用 function?

我将从以下问题开始。

1)按钮的function有什么作用? 能否将其功能转移到服务中并在多个应用程序之间共享?

2)你能把功能放在 DLL 中并在两个应用程序之间共享吗?

3) 这两个应用程序真的需要相互通信吗?

如果这两个进程必须相互通信,而您只希望应用程序 A 响应来自应用程序 B 的消息,请考虑使用命名管道进行 TCP/IP 通信。 这在 .NET 中足够简单,并提供进程之间的快速通信。

更新:这是一个链接,其中包含有关使用命名管道的信息: http://msdn.microsoft.com/en-us/library/bb546085.aspx

更新 2:这是您更新问题后的更新。 您有权访问 A.exe 的源代码吗? 如果这样做,您有两个选择:1) 将该逻辑移到您的服务中或 2) 修改 A.exe 以接受命令行参数,以便您的服务可以调用该流程并取回结果。 如果您没有源代码并且无法从命令行调用 A.exe,那么除了以 web 服务可以调用的形式自己编写流程之外,您无能为力。

PS 你不必担心并发调用,因为每个服务器请求都会执行一个单独的进程。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM