【发布时间】:2011-05-13 09:21:13
【问题描述】:
嗨,
我正在使用 ExtTextOut API 从任何应用程序窗口检索特定位置的文本(例如 MS Word 中光标/插入符号下的文本)。 在大多数情况下,我能够从 ExtTextOut 函数中检索文本及其位置。
BOOL ExtTextOut(
__in HDC hdc,
__in int X,
__in int Y,
__in UINT fuOptions,
__in const RECT *lprc,
__in LPCTSTR lpString,
__in UINT cbCount,
__in const INT *lpDx
);
通过以下方式之一检索文本的位置:
- 在剪切矩形的ExtTextOut函数中指定 参数(const RECT *lprc - 它是一个可选参数)
- 它被指定为 X,Y 字符串位置 ExtTextOut 参数(相对于窗口客户矩形)。
-
使用提供的用于剪切区域/路径的 API 之一从设备上下文中检索文本周围的矩形,例如 GetClipBox/GetClipRgn API。
int GetClipBox( __在 HDC hdc 中, __out LPRECT lprc ); 诠释GetClipRgn( __在 HDC hdc 中, __in HRGN hrgn );
(http://msdn.microsoft.com/en-us/library/dd183435(v=VS.85).aspx)
问题在于,在某些应用程序中,这些检索文本位置的方法都不起作用。此外,更令人沮丧的是,当使用某些 API 从设备上下文中检索区域/路径时,它成功返回并指示该设备上下文没有区域/路径。
我的问题:
设备上下文怎么可能没有区域/路径?
是否有任何其他方法可以检索文本的位置(或矩形),因为据我所知,它的位置必须在某处指定才能最终在屏幕上绘制?
我们将不胜感激。
谢谢,
莫米科。
【问题讨论】:
-
听起来你在写某种恶意软件!!!
-
好吧,我不是。没有恶意软件,有恶意使用的软件:)