从C#windows窗体应用程序中使用windows API阅读非C#应用程序文本框 我们有一个用C++编写的旧Windows 32位应用程序,它可以做一些事情并显示类似于文本框的结果。
我被要求用C语言编写一个应用程序,从旧应用程序中读取数据,然后进一步处理数据 问题是如何读取旧应用程序中的文本框 有人告诉我,我可以使用windows API获取应用程序的“句柄”,并逐步遍历控件,然后读取每个控件的数据!这是真的吗?如果是,我将如何从C#中执行 这是一个.Net 4 Windows窗体应用程序从C#windows窗体应用程序中使用windows API阅读非C#应用程序文本框 我们有一个用C++编写的旧Windows 32位应用程序,它可以做一些事情并显示类似于文本框的结果。,c#,winapi,C#,Winapi,我被要求用C语言编写一个应用程序,从旧应用程序中读取数据,然后进一步处理数据 问题是如何读取旧应用程序中的文本框 有人告诉我,我可以使用windows API获取应用程序的“句柄”,并逐步遍历控件,然后读取每个控件的数据!这是真的吗?如果是,我将如何从C#中执行 这是一个.Net 4 Windows窗体应用程序 非常感谢您可能需要使用一些互操作调用来实现这一点,特别是使用/和&/的组合 这里有一个主题(C++中的,但是相同的概念只需要移植使用),它有点过时,但我相信它应该与你的情况非常相关。 <
非常感谢您可能需要使用一些互操作调用来实现这一点,特别是使用/和&/的组合
这里有一个主题(C++中的,但是相同的概念只需要移植使用),它有点过时,但我相信它应该与你的情况非常相关。
< P>你可以使用St+++应用程序(附带VisualStudio)来检查你的本地应用程序并找到你要寻找的控件的类名。 这样,您就可以获得本机应用程序的主窗口句柄,如果您负责从c#app启动该应用程序,那么这很容易: ... var proc=Process.Start(); var mainWndHandle=proc.MainWindowHandle; 否则,您必须找到其他方法来查找该窗口fe。您可以使用我在下面描述的函数在桌面上查找该窗口(有关更多信息,请参阅msdn页) 如果您拥有所有这些,那么您可以使用函数获得textbox控件的句柄(也可以通过将NULL作为hwndParent传递来使用它来查找主窗口) 当你有了这个文本框的句柄,你就可以阅读它的内容了如果你还没有被调用,你可以检查一下如何从C程序中调用WiAPI函数。
< P>你真的需要C++应用程序的UI吗?因为有2个不同的消息泵的UIS将是非常不可容忍的。你需要在这个值的更新上对这个混乱进行同步。< /P><>你为什么不把逻辑代码从C++应用程序中正确地脱掉,并将它暴露在互操作CLR项目(C++ ++ CLI)中?如果你不需要给C++应用程序添加更多的特性,那么我就非常直截了当地提出了< /P>不幸的是,由于内部政治,我无法访问原始的源代码,但是感谢你的回复,如果主窗口打开另一个表单并隐藏它,它就返回句柄0!在这种情况下,我如何得到父句柄或子什么是把手? ... var proc = Process.Start(); var mainWndHandle = proc.MainWindowHandle;