user32.dll中。我如何找到文本框?

时间:2016-10-16 01:33:47

标签: c# winapi user32

到目前为止,我创建了一个窗口 - 活动,使用SendKeys发送文本,但我想在后台使用SendMessage

IntPtr main = FindWindow(null, "Label Code (Scan)");
if (!main.Equals(IntPtr.Zero))
    {
      if (SetForegroundWindow(main))
         {
            SendKeys.SendWait(code);
            SendKeys.SendWait("{ENTER}");
          }
     }  

我尝试过类似的事情:

IntPtr main = FindWindow(null, "Label Code (Scan)");
SendMessage(main, 0x000C, 0, "Hello");

但它将窗口的标题重命名为“Hello”。看起来,我需要找到子窗口,但无法找到lpszClass

public static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);

enter image description here

1 个答案:

答案 0 :(得分:2)

窗口中的控件不是真正的Windows控件。它们由Window itselt绘制和管理。但是,该窗口可能支持Windows自动化框架以允许与控件进行交互。

使用工具Inspect检查窗口是否支持Windows Automation API。

如果是,请使用classes in System.Windows.Automation和您在“检查”工具中看到的信息来设置文字。