我正在尝试编写一个应用程序来处理并向他发送击键 ctrl-a 然后 ctrl-c 我将在剪贴板中包含文本内容。
我读到正确的 api 是PostMessage
`Sendmeesage`。使用 api 我成功写入程序(例如记事本)。但我没有成功发送击键。
这是我的代码
public const uint WM_KEYDOWN = 0x0100;
public const uint WM_KEYUP = 0x0101;
const int CTRL = 0x11;
const int A_Key = 0x41;
const int C_Key = 0x43;
static void Main(string[] args)
{
IntPtr hWnd = FindWindow(null, "Microsoft Word ");
hWnd = FindWindowEx(hWnd, null, "Edit", null);
//PostMessage(hWnd, WM_GETTEXT, 0x11, 0);
Process[] processes = Process.GetProcessesByName("winword");
foreach (Process p in processes)
{
PostMessage((IntPtr)hWnd, WM_KEYDOWN, (IntPtr)CTRL, 1);
PostMessage((IntPtr)hWnd, WM_KEYDOWN, (IntPtr)A_Key, 1);
PostMessage((IntPtr)hWnd, WM_KEYUP, (IntPtr)A_Key, 1);
PostMessage((IntPtr)hWnd, WM_KEYUP, (IntPtr)CTRL, 1);
}
}
我做错了什么?