public static string CurrentCompStr(IntPtr handle) { int dwIndex = 8; IntPtr context = InteropWindow.ImmGetContext(handle); try { int compositionStringW = InteropWindow.ImmGetCompositionStringW(context, dwIndex, (byte[])null, 0); if (compositionStringW <= 0) { return(string.Empty); } byte[] numArray = new byte[compositionStringW]; InteropWindow.ImmGetCompositionStringW(context, dwIndex, numArray, compositionStringW); return(Encoding.Unicode.GetString(numArray)); } finally { InteropWindow.ImmReleaseContext(handle, context); } }