C#在选定进程中自动键入

时间:2015-04-22 20:39:50

标签: c# process

所以嘿,我们试图创建一个汽车类型,例如Internet Explorer中的自动类型

此脚本

Process[] processes = Process.GetProcessesByName("JLauncher");

foreach (Process proc in processes)
    PostMessage(proc.MainWindowHandle, WM_KEYDOWN, detail, 0);

int detail = 0x33

基本上,此脚本仅在过程JLauncher

中按下键盘上的3

我想知道是否有办法将这个脚本与:

结合起来
SendKeys.Send();

基本上是这样的:

Process[] processes = Process.GetProcessesByName("JLauncher");

foreach (Process proc in processes)
    PostMessage(proc.MainWindowHandle, WM_KEYDOWN, SendKeys.Send("Hello"), 0);

据我所知,这个论坛不适合你们为别人编写代码,但我真的需要一行脚本

anny1可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

您需要发送多个WM_KEYDOWN事件才能输入字符串。为此,您首先必须将字符串解析为wParam的相应PostMessage值(virtual key codes)。您可以使用KeyInterop.VirtualKeyFromKey来获取这些内容。

为了帮助您入门,简化版(不处理大写/小写字符)可能如下所示:

private static void SendKeysTo(Process proc, string str)
{
    foreach (var ch in str)
    {
        Key result;
        if (Enum.TryParse(ch + "", true, out result))
        {
            PostMessage(proc.MainWindowHandle, WM_KEYDOWN, KeyInterop.VirtualKeyFromKey(result), 0);
        }
    }
}

您还应该考虑发送WM_CHAR instead