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

时间:2012-10-24 08:04:38

标签: c#

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

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

您需要使用win32 API中的FindWindowGetWindowText(来自 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);