SendMessageTimeout无法正常工作

时间:2017-10-09 04:22:37

标签: winapi

我需要获取窗口文本的长度。所以,我使用下面的代码来实现它 -

const uint SMTO_ABORTIFHUNG = 0x0002;
    const int NoResponse = -1;
    const uint WM_GETTEXTLENGTH = 0x000E;
    static int GetWindowTextLength(IntPtr hwnd)
    {
        int length;
        int result = SendMessageTimeout(hwnd, WM_GETTEXTLENGTH, 0, 0, SMTO_ABORTIFHUNG, 500, out length); 
        if (result == 0) return NoResponse; else return length;
    }

[DllImport("user32.dll", EntryPoint = "SendMessageTimeout", CharSet = CharSet.Auto)]
    public static extern int SendMessageTimeout(IntPtr hwnd, uint Msg, int wParam, int lParam, uint fuFlags, uint uTimeout, out int lpdwResult);

我正在使用SMTO_ABORTIFHUNG标志,以便在指定的超时后发出。但是,有时候,调用似乎在调用SendMessageTimeout时被阻止,并且没有出来。

我用google搜索SendMessageTimeout是否存在任何已知限制,但找不到任何限制。

我不确定我在这里缺少什么才能让它始终正常工作。

非常感谢任何帮助。

此致 kvk938

0 个答案:

没有答案