none
获取全局插入符位置 RRS feed

  • Question

  • 通过

    GUITHREADINFO pg;
    pg.cbSize = sizeof(GUITHREADINFO);
    POINT point;//光标位置
    ::GetGUIThreadInfo(NULL, &pg);
    RECT rc;
    rc.left = pg.rcCaret.left;
    rc.top = pg.rcCaret.top;
    rc.right = pg.rcCaret.right;
    rc.bottom = pg.rcCaret.bottom;

    wchar_t buff[MAX_PATH]{};

    可以获取全局插入符位置,但是有一些窗口 duirectui窗口不起作用,比如qq 窗口等

    有什么办法可以获取duirectui 窗口插入符位置呢?除了用输入法的方式

    Tuesday, January 3, 2017 9:06 AM

All replies

  • Hi 岁月流年,

    感谢在MSDN论坛发帖。

    >>可以获取全局插入符位置,但是有一些窗口 duirectui窗口不起作用,比如qq 窗口等

    有什么办法可以获取duirectui 窗口插入符位置呢?除了用输入法的方式

    你可以使用GetCursorPos 函数来获取插入符在屏幕中的坐标。如果想获取在窗口中的坐标,可以结合GetWindowRect 函数来使用。

    希望对你有所帮助。

    Best Regards,

    Sera Yu


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    Wednesday, January 4, 2017 1:56 AM
  • GetCusorPos 是获取鼠标光标位置,我不是获取光标位置,是想获取插入符的位置,插入符和光标是两个东西,插入符的api是GetCaretPos(),但是这个仅限于自己的窗口,我想获取任何窗口中插入符的位置。GUITHREADINFO 可以实现,但是在duicreatui窗口就不起作用了,比如qq窗口就不起作用
    Wednesday, January 4, 2017 7:37 AM
  • >>GetCusorPos 是获取鼠标光标位置,我不是获取光标位置,是想获取插入符的位置,插入符和光标是两个东西,插入符的api是GetCaretPos(),但是这个仅限于自己的窗口,我想获取任何窗口中插入符的位置。GUITHREADINFO
     可以实现,但是在duicreatui窗口就不起作用了,比如qq窗口就不起作用

    很抱歉理解错了你的意思。

    尝试一下在使用GetGUIThreadInfo前,调用SetForegroundWindow将qq窗口设置为forceground。 GUITHREADINFO只适用于使用Win32插入符函数的应用程序,特别是SetCaretPos()。 如果一个应用程序绘制自己的插入符号而不使用这些,这些Win32函数就不起作用了。只能查找是否有开源代码可以解决了。

    Best Regards,

    Sera Yu


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    Friday, January 6, 2017 7:30 AM