내 요구 사항은 MS Word에서 intellisense로 자동 완성 기능을 구현하는 것이 었습니다. 나는 사용자가 스페이스 바를 눌렀을 때마다 스페이스 바를 마지막으로 쳤을 때부터 사용자가 누른 키를 추적해야한다고 결정했다. Detecting text changes in Word 2016 from VSTO add-in에있는 솔루션을 기반으로 키가 올바른 순서로 눌러지지 않았고 후크 콜백이 여러 번 실행되었습니다. 문제를 해결하기위한 더러운 방법을 찾았지만 해결책은 완전한 것이 아닙니다. 며칠을 보낸 후 해결 방법을 찾았고이 문제가 해결되어야한다고 생각합니다. 여기에 간다 :
private IntPtr KeyboardHookCallback(int nCode, IntPtr wParam, IntPtr lParam)
{
string key = ((System.Windows.Forms.Keys)wParam).ToString();
if (key == "Space")
{
Word.Selection sel = Globals.ThisAddIn.Application.Selection;
Word.Range rng = sel.Range.Paragraphs[1].Range;
object unitWord = Word.WdUnits.wdWord;
object countN1 = -1;
sel.MoveStart(ref unitWord, ref countN1);
string userInput = sel.Words[1].Text;
sel.MoveRight(ref unitWord, ref missing, ref missing);
}
}
희망이 모든 사람들이 비슷한 문제로 고민하는 데 도움이됩니다.
hookcall이 여러 번 실행되는 것과 동일한 문제가 발생합니다. 어떻게 이것을 해결 했습니까? – Selwyn