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

如何通过c#应用程序调用具有UI的外部windows应用程序?,c#,web-services,dynamic-data-exchange,C#,Web Services,Dynamic Data Exchange,我们有一个带有GUI的程序(a.exe)和一个用一些文本处理NLP内容的工具栏。 在该工具栏中,我们有一个函数,该函数通过添加一些xml标记来转换文本。这里有人(老板)希望我创建一个Web服务调用函数a。它告诉我(他几年前使用过),我看到了类似的东西 Web服务将被Internet上的人使用:发送文本并以xml的形式获取结果。当有人调用WS时,GUI程序无法启动,因为它太慢,因此有人建议一次性启动此A.exe,WS将通过发送DDE调用来请求此A.exe。我不知道在并发调用的情况下,A.exe将如

我们有一个带有GUI的程序(a.exe)和一个用一些文本处理NLP内容的工具栏。 在该工具栏中,我们有一个函数,该函数通过添加一些xml标记来转换文本。这里有人(老板)希望我创建一个Web服务调用函数a。它告诉我(他几年前使用过),我看到了类似的东西

Web服务将被Internet上的人使用:发送文本并以xml的形式获取结果。当有人调用WS时,GUI程序无法启动,因为它太慢,因此有人建议一次性启动此A.exe,WS将通过发送DDE调用来请求此A.exe。我不知道在并发调用的情况下,A.exe将如何反应

网络服务将:

  • 将文本文件保存在一个目录中
  • 调用A.exe
  • A.exe将计算文本文件并创建xml文件
  • WS将循环,直到xml文件存在
  • WS将获取xml并将其作为流发送给原始调用方
  • 我想指出:

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


    PS:用UI构建WS调用服务器端程序是一种异端邪说,不是吗?

    这个问题的答案实际上取决于您试图实现的目标。您的函数是否更改来自外部数据源(如数据库)的数据,或者您是否在应用程序中调用函数

    我将从以下问题开始

    1) 按钮的功能是什么?它的功能是否可以移动到服务中并在多个应用程序之间共享

    2) 您能否将功能放在DLL中并在两个应用程序之间共享

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

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

    更新:这里有一个链接,其中包含有关使用命名管道的信息:

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


    另外,您不必担心并发呼叫,因为每个服务器请求都将执行一个单独的过程。

    回答您的相关问题:1)不,因为我的老板不想。2) 不,因为我老板不想。3) 是的,因为我的老板是按原样卖的。=>实际上,UI程序加载一个文本并返回一个xml。WS将获取流并返回流。。。但是“Nul n'est plus sourd que celui qui ne veut entendre!”然后使用命名管道或简单的TCP/IP。请参阅我在文章中更新的措辞。我添加了一个链接,其中有一个使用命名管道的简单示例。它们提供了快速/简单的进程间通信。如果您需要进一步的帮助,请考虑更新您的问题,详细说明您正试图解决的具体问题。非常感谢。我没有问自己这个UI程序的并发调用。。。我猜它一使用就会崩溃。1)我们有源代码,但老板不想把逻辑转移到我的服务中。2)我可以提出这样的解决方案。我非常感激你!(A.exe是一个旧的用户界面程序,其中包含大量LoC和作者,也称为Boss,…嗯!)请更新您的问题,并提供有关应用程序如何工作以及它试图做什么的更多详细信息。什么是流程A(UI)和流程B?流程B期望流程A做什么?进程A是否与进程B对话?我添加了一些细节。他们可以理解吗?