2014-01-11 8 views
1

Я реализовал класс, который наследует интерфейс ITfLanguageProfileNotifySink. Он работает, я могу получить событие, когда меняются языки, но это только когда мое приложение сосредоточено.Приложение не обнаруживает изменения языка при утрате фокуса

Что делать, чтобы обнаружить изменения языка в моем приложении, когда оно не сфокусировано?

+0

Я нашел этот очень полезный блог http://blogs.msdn.com/b/tsfaware/archive/2007/05/21/transitory-extensions.aspx Кажется, мне нужно реализовать интерфейс ITfThreadMgrEventSink и попробовать чтобы проверить, является ли контекст преходящим. К сожалению, я не могу скомпилировать код в этом блоге. – user3133467

+0

В какой версии Windows вы работаете? В 7 и ниже состояние языка равно * на процесс *, поэтому нет необходимости определять изменения языка, когда приложение не сфокусировано. –

+0

Кроме того, комментарий, который вы опубликовали, связан с обнаружением переходных контекстов, поэтому я не уверен, что это связано с изменениями языка. –

ответ

1

ITfLanguageProfileNotifySink - это интерфейс, который вы хотите, но его необходимо реализовать в своей текстовой службе DLL, а не в основном приложении.

Вам понадобится реализовать текстовую службу DLL в любом случае, если вы хотите взаимодействовать с текстом в документе, поскольку интерфейсы TSF не имеют прокси & и не могут выполнять кросс-процесс.