C#希伯来语中的句柄获取窗口标题返回问号

时间:2013-10-02 18:56:27

标签: c# titlebar

我使用的是:通过句柄获取窗口的标题:

[DllImport("user32.dll")] private static extern int GetWindowText(int hWnd, StringBuilder title, int size);

StringBuilder title = new StringBuilder(256);
GetWindowText(hWnd, title, 256);

如果标题有希伯来字符,则用问号代替它们 我想这个问题与经济或某事有关......我该如何解决?

2 个答案:

答案 0 :(得分:5)

使用此:

[DllImport("user32.dll", CharSet = CharSet.Auto)]

答案 1 :(得分:0)

您的问题包含一个小错误,该错误可能很少发生。您假设标题的最大长度为256个字符,这在大多数情况下可能已经足够。但是,正如post所示,该长度可能为10万个字符,甚至更多。因此,我将使用另一个帮助器函数:GetWindowTextLength

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

[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
static extern int GetWindowTextLength(IntPtr hWnd);

public static string GetWindowTitle(IntPtr hWnd)
{
    var length = GetWindowTextLength(hWnd);
    var title = new StringBuilder(length);
    GetWindowText(hWnd, title, length);
    return title.ToString();
}