【发布时间】:2009-03-17 04:10:04
【问题描述】:
在我的 c# .Net 应用程序中,我一直在尝试能够在当前聚焦的窗口中检索当前选定的文本。 (注意它可以是windows中打开的任何窗口,比如word,或者safari)。
我能够检索到当前焦点控件的句柄。 (对 user32.dll 和 kernel32.dll 使用几个互操作调用)。
但是,我无法始终如一地取回所选文本。
我尝试过使用 SENDMESSAGE 和 GET_TEXT。然而,这似乎只适用于某些应用程序(适用于简单的应用程序,如 wordpad,不适用于更复杂的应用程序,如 firefox 或 word)。
我尝试过使用 SENDMESSAGE 和 WM_COPY。但是,这似乎只适用于某些控件。 (我认为 WM_COPY 会导致与手动按下 CTRL-C 完全相同的行为,但事实并非如此)。
我尝试使用 SENDMESSAGE 和 WM_KEYUP+WM_KEYDOWN 来手动激发复制命令。但这也不是一直有效。 (可能与用户为调用我的应用程序而按下的实际热键重叠)。
关于始终能够检索当前选定文本的任何想法? (在任何应用程序上)。
【问题讨论】: