我必须在本机c ++ - mfc-application中访问自定义控件。我需要阅读控件的内容。控件由两个按钮和按钮之间的标签组成。标签包含一个月和一年的按钮,我可以在一个月后或将来导航。 有没有办法读取此控件中的文本并访问这两个按钮?
我已经能够访问控件所在的窗口。因此我使用的是我公司提供的框架。但是使用这个框架,不可能在上述控件中获取文本和按钮。
答案 0 :(得分:0)
您必须通过窗口句柄访问控件。因此,您必须获取本机应用程序窗口的窗口句柄,然后尝试查找标签和按钮的窗口句柄(FindWindow
WinAPI函数)。然后,您可以将相应的窗口消息发送到窗口以获取文本或“按下”按钮。
答案 1 :(得分:0)
您需要使用win32 API中的FindWindow
和GetWindowText
(来自 pinvoke ):
[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)
(来自msdn)将指定窗口标题栏的文本(如果有的话)复制到缓冲区中。如果指定的窗口是控件,则复制控件的文本
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
static extern int GetWindowText(IntPtr hWnd, StringBuilder lpString, int nMaxCount);