我花了一些时间搜索,所以如果有人已经回答了这个问题,请原谅。我用 C# 编写了一个程序来执行各种任务,但我不想从文件中收集信息,而是想从另一个正在运行的程序中检索一些值,该程序将与我自己的软件同时打开。这个其他程序将同时具有变量和屏幕数据,我需要将它们放入我自己的变量中。有什么好的方法可以解决这个问题吗?我知道 C++ 有一些方法,但我不知道;所以即使我必须用 C++ 编写它并通过 C# 调用它我也很好。
编辑:更多信息;我需要在运行时捕获 2 个消息框区域和 3 个 int 变量。
如果您想附加到托管应用程序,您可以查看 Snoop 如何执行此操作。它是开源的:http ://snoopwpf.codeplex.com/
...而不是从我想要的文件中收集信息...
好吧,您可以使用诸如WCF之类的标准非文件通信(或学习曲线较少的替代方法)进行通信,而不是使用任何这些方法。
考虑使用EnumWindows列出所有窗口。
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool EnumWindows(EnumWindowsProc lpEnumFunc, IntPtr lParam);
然后,您可以获得有关这些窗口的其他信息。例如,这是一篇描述如何获取窗口标题的博客文章。