1

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

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

4

2 回答 2

0

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

于 2012-10-24T08:09:27.527 回答
0

您需要使用FindWindowGetWindowText来自 win32 API(来自pinvoke):

FindWindow

[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr FindWindow(string lpClassName, string lpWindowName);

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

[DllImport("user32.dll", EntryPoint="FindWindow", SetLastError = true)]
static extern IntPtr FindWindowByCaption(IntPtr ZeroOnly, string lpWindowName);

您也可以致电FindWindow(default(string), lpWindowName)FindWindow((string)null, lpWindowName)

GetWindowText

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

[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
static extern int GetWindowText(IntPtr hWnd, StringBuilder lpString, int nMaxCount);
于 2012-10-24T08:14:58.220 回答