我的Windows应用程序处于运行状态。我有另一个控制台应用程序需要与我的winApp交互。我可以从控制台获取正在运行的进程详细信息并将焦点设置到winApp,但我无法调用winApp的任何功能。
有人可以帮助我吗?
如果我不清楚,请告诉我。
答案 0 :(得分:0)
几种可能性:
IPC的一些可能性:
答案 1 :(得分:0)
如果交互不复杂,最简单的方法是将自定义消息发布到窗口。 Microsoft已为特定于应用程序的信号保留了一系列可能的值。您可以使用RegisterMessage函数在运行时为您的消息分配值,并为其他应用程序确定当前值。
RegisterMessage功能:https://msdn.microsoft.com/en-us/library/windows/desktop/ms644947%28v=vs.85%29.aspx
您可以在每个应用程序启动时调用/调用RegisterMessage函数。
PostMessage功能:https://msdn.microsoft.com/en-us/library/windows/desktop/ms644944%28v=vs.85%29.aspx
您可以在控制台应用程序中调用/调用PostMessage函数。
您的winforms应用程序将需要侦听该消息,我认为一个地方是通过覆盖PreFilterMessage方法。
不可否认,您不会获得大量可以推送事件的数据。我用过一次这两个进程之间传递驱动器号。
答案 2 :(得分:0)
您正在考虑某种进程间通信,根据您尝试实现的范围,有多种方法可以实现此目的。
例如,如果您需要应用程序之间的丰富接口,则可以在Windows应用程序中托管WCF服务器,并从控制台应用程序连接到此作为WCF客户端。这将允许您在应用程序中公开要调用的方法。
e.g: https://msdn.microsoft.com/en-us/library/ee939340.aspx
您还可以使用命名管道,这为您提供了一个简单的读/写API来获取进出给定进程的信息,然后您只需处理应用程序中收到的信息并执行您的功能
例如:https://msdn.microsoft.com/en-us/library/bb546102(v=vs.110).aspx
希望这有帮助。