本机c+中的c#访问控制+;应用

本机c+中的c#访问控制+;应用,c#,C#,我必须访问本机c++-mfc应用程序中的自定义控件。我需要阅读控件的内容。控件由两个按钮和按钮之间的标签组成。标签包含一个月和一年,通过按钮,我可以在一个月前或未来导航。 是否有办法读取此控件中的文本并访问这两个按钮 我已经能够访问控件所在的窗口。因此,我使用的是我公司提供的框架。但是,使用此框架,无法获取所述控件中的文本和按钮。您必须通过控件的窗口句柄访问这些控件。因此,您必须获取本机应用程序窗口的窗口句柄,然后尝试查找标签和按钮的窗口句柄(FindWindowWinAPI函数)。然后,您可以

我必须访问本机c++-mfc应用程序中的自定义控件。我需要阅读控件的内容。控件由两个按钮和按钮之间的标签组成。标签包含一个月和一年,通过按钮,我可以在一个月前或未来导航。 是否有办法读取此控件中的文本并访问这两个按钮


我已经能够访问控件所在的窗口。因此,我使用的是我公司提供的框架。但是,使用此框架,无法获取所述控件中的文本和按钮。

您必须通过控件的窗口句柄访问这些控件。因此,您必须获取本机应用程序窗口的窗口句柄,然后尝试查找标签和按钮的窗口句柄(
FindWindow
WinAPI函数)。然后,您可以向窗口发送相应的窗口消息,以获取文本或“按下”按钮。

您需要使用win32 API(从pinvoke)和:

:

仅按标题查找窗口。注意:必须将
IntPtr.Zero
作为第一个参数传递:

[DllImport("user32.dll", EntryPoint="FindWindow", SetLastError = true)]
static extern IntPtr FindWindowByCaption(IntPtr ZeroOnly, string lpWindowName);
您还可以调用
FindWindow(默认值(字符串),lpWindowName)
FindWindow((字符串)null,lpWindowName)

以及:

(来自msdn)将指定窗口标题栏的文本(如果有)复制到缓冲区中。如果指定的窗口是控件,则复制该控件的文本


好的,这可以得到窗口。但我已经有了窗户的把手。我需要窗口内的控件。win32中的每个控件都是一个窗口,请尝试使用
spy++
查看控件的句柄。查找控件句柄并获取其文本。
[DllImport("user32.dll", EntryPoint="FindWindow", SetLastError = true)]
static extern IntPtr FindWindowByCaption(IntPtr ZeroOnly, string lpWindowName);
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
static extern int GetWindowText(IntPtr hWnd, StringBuilder lpString, int nMaxCount);