如何使用C#中的PostMessage发送Enter键?

如何使用C#中的PostMessage发送Enter键?,c#,testing,postmessage,C#,Testing,Postmessage,我正在尝试向带有PostMessage的窗口发送一些输入。我没有使用SendInput,因为它不会聚焦。我输入了字符(A),但如何发送Enter键?这是我的代码的精简版本。它运行,但未发送Enter [DllImport("user32.dll")] [return: MarshalAs(UnmanagedType.Bool)] static extern bool PostMessage(IntPtr hWnd, uint msg, IntPtr wParam, IntPtr lParam);

我正在尝试向带有
PostMessage
的窗口发送一些输入。我没有使用
SendInput
,因为它不会聚焦。我输入了字符(
A
),但如何发送
Enter
键?这是我的代码的精简版本。它运行,但未发送
Enter

[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool PostMessage(IntPtr hWnd, uint msg, IntPtr wParam, IntPtr lParam);

const int WM_KEYDOWN    = 0x100;
const int WM_KEYUP      = 0x101;

const Int32 WM_CHAR = 0x0102;
const Int32 VK_RETURN = 0x0D;
const int VK_ENTER = 0x0D;

IntPtr val = new IntPtr((Int32)'A');
PostMessage(WindowHandle, WM_KEYDOWN, (IntPtr)(val - 0x020), new IntPtr(0));
PostMessage(WindowHandle, WM_CHAR, (IntPtr)val, new IntPtr(0));
PostMessage(WindowHandle, WM_KEYUP, (IntPtr)(val - 0x020), new IntPtr(0));
PostMessage(WindowHandle, WM_KEYDOWN, (IntPtr)(val - 0x020), new IntPtr(0));
PostMessage(WindowHandle, VK_RETURN, (IntPtr)val, new IntPtr(0));
PostMessage(WindowHandle, WM_KEYUP, (IntPtr)(val - 0x020), new IntPtr(0));

我想你发错了。试试这个

IntPtr val = new IntPtr((Int32)'A');
PostMessage(WindowHandle, WM_KEYDOWN, (IntPtr)(val - 0x020), new IntPtr(0));
PostMessage(WindowHandle, WM_CHAR, (IntPtr)val, new IntPtr(0));
PostMessage(WindowHandle, WM_KEYUP, (IntPtr)(val - 0x020), new IntPtr(0));
PostMessage(WindowHandle, WM_KEYDOWN, new IntPtr(VK_RETURN), new IntPtr(0));
PostMessage(WindowHandle, WM_KEYUP, new IntPtr(VK_RETURN), new IntPtr(0));

当我这样做的时候,我得到了一个“不能从int转换到System.intPrt”的错误,对不起,现在给我一个机会,很抱歉@jamie帮了忙吗?假装按键向上/向下信息没有多大意义,只发送它们生成的信息。只有两个WM_CHAR消息。VK_返回不是消息。总是喜欢System.Windows.Automation。我相信你必须有窗口焦点才能做到这一点?