我正在使用 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);
}
}
最佳答案
根据 MSDN documentation , 要发送 Unicode,需要使用 PostMessageW
。
这是相同的方法签名,只需导入名称 PostMessageW
并执行即可。
更新
正如 Hans 所说的那样,更好的方法是设置 DllImport
的 CharSet
:
[DllImport("user32.dll", CharSet=CharSet.Unicode, SetLastError=true)]
private static extern bool PostMessage(IntPtr hWnd, int msg, IntPtr wp, IntPtr lp);
这应该会导致框架最终导入 PostMessageW
。
非常感谢汉斯!
关于c# - 使用 PostMessage 发送 Unicode 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38223948/