我有这样的代码:

IntPtr hwndGetValue = new IntPtr(67904);
List<IntPtr> windows = GetChildWindows(hwndGetValue);

int textLength = GetWindowTextLength(windows[0]);
StringBuilder outText = new StringBuilder(textLength + 1);
int a = GetWindowText(windows[0], outText, outText.Capacity);

在Windows中,我有49个指针。 Windows [0]具有我可以在Spy++中看到的文本,但是方法GetWindowText返回outText矩形而不是此文本。我得到{慬潹瑵潃瑮潲ㅬ}(在Visual和记事本中,这个中文符号显示为矩形。我在编码方面有问题吗?

谢谢

最佳答案

这些症状表明您正在调用GetWindowText的ANSI版本,但是将返回的值解释为Unicode。

解决方案是确保您改为调用Unicode版本的GetWindowText。为此,请在Charset=Charset.Unicode中指定DllImport

[DllImport("user32.dll", CharSet=CharSet.Unicode, SetLastError=true)]
static extern int GetWindowText(IntPtr hWnd, StringBuilder lpString,
    int nMaxCount);

10-08 06:02