我正在使用PostMessage将输入发送到另一个应用程序中的flash对象。它工作正常,直到我尝试发送一个unicode字符。在这个例子中:
迈克尔的书撇号不是真的,它不是ASCII 39,而是unicode U + 2019。当它一次发送1个字符时,它将作为unicode值丢失并作为组成unicode的原始字符登陆
迈克尔的书如果我复制并粘贴到该窗口,它会移动正常,如果我将文本文件加载到该窗口,它就可以正常加载。因此接收窗口能够接收unicode,但我发送它的方式必须不正确。任何帮助将不胜感激。
private void SendKeysToForm(string Message)
{
for (int i = 0; i < Message.Length; i++)
{
PostMessage(hwnd, WM_CHAR, (IntPtr)Message[i], IntPtr.Zero);
}
}
答案 0 :(得分:3)
根据MSDN documentation,要发送Unicode,您需要使用PostMessageW
。
它是相同的方法签名,只需导入名称PostMessageW
并执行即可。
正如Hans所说,更好的方法是设置CharSet
的{{1}}:
DllImport
这应该导致框架最终导入[DllImport("user32.dll", CharSet=CharSet.Unicode, SetLastError=true)]
private static extern bool PostMessage(IntPtr hWnd, int msg, IntPtr wp, IntPtr lp);
。
非常感谢汉斯!