我的Outlook插件(FormRegion)按需将文本插入邮件正文(用户单击按钮) - 文本由“InsertAfter”函数(Range函数)插入。 单击后,焦点位于按钮上,因此用户需要在编辑器中单击以继续写入。
如何将焦点设置回编辑器?
谢谢。
答案 0 :(得分:1)
在尝试了所有可能的解决方案之后,我注意到邮件正文在启动messagebox \ new form时丢失了焦点,当它关闭时 - 焦点又回到了邮件正文。
所以我提出了一些肮脏的解决方法 - 我创建了一个0%不透明度的新表单,它在几毫秒后关闭,这样就可以立即将重点放回邮件正文。
很脏,但效果很好。
答案 1 :(得分:0)
您可以尝试使用Word对象模型中的Document类的Activate方法。
或者只使用SetFocus功能将键盘焦点设置为指定窗口。该窗口必须附加到调用线程的消息队列。
SetFocus
函数向失去键盘焦点的窗口发送WM_KILLFOCUS
消息,并向接收键盘焦点的窗口发送WM_SETFOCUS
消息。它还会激活接收焦点的窗口或接收焦点的窗口的父窗口。
答案 2 :(得分:0)
您需要找到编辑器控件的HWND并调用SetActiveWindow
/ SetFocus
/ ShowCaret
Windows API函数。如果你在流程外(不是在你的情况下),事情会变得更有趣。
如果使用Redemption是一个选项,则会公开SafeInspector对象和SafeInspector.FocusEditor
方法。