GetWindowText只为我提供按钮的窗口标题,但没有标签

时间:2016-04-12 16:00:20

标签: c# windows user32 findwindow spy++

使用GetWindowText函数我试图使用C#的错误消息获取Window Caption。我能够获得对话中每个按钮的Window Caption,但不能获得标签的文本。使用Spy ++我发现对话框和Window Caption字段填充了对话标签中的消息,但是这个Window Handle的GetWindowText给了我一个空字符串。与按钮Window Handle相比,它为我提供了一个带有Window Caption的字符串。这是我使用的代码:

string nameOfStuff = "";
StringBuilder lpClassName = new StringBuilder();
int index = 20;
int ct = 0;
IntPtr result = IntPtr.Zero;
do
{
    result = FindWindowEx(appHandle, result, null, null);
    if (result != IntPtr.Zero)
    {
        GetWindowText(result, lpClassName, 100);
        nameOfStuff += "      " + Convert.ToString(ct) + lpClassName.ToString() + "\n";
        ++ct;
    }
}

while (ct < index && result != IntPtr.Zero);

此代码为我提供了除标签之外的所有窗口标题。以下是Spy ++的外观: enter image description here

enter image description here

知道为什么我不能以这种方式获得标签的Window Caption吗? 谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用此代码获取标题:

LRESULT result = ::SendMessage(handle_of_window, WM_GETTEXT, 255, (LPARAM)charArray);
if (result > 0)
{
    // Print charArray to get result.
}