C# 使用C向非活动窗口发送字符串#

C# 使用C向非活动窗口发送字符串#,c#,winapi,sendmessage,C#,Winapi,Sendmessage,我正在制作一个程序,可以将鼠标点击、键盘输入和字符串发送到游戏窗口(即使该窗口处于非活动状态) ‍ 我使用SendMessage发送鼠标点击和键盘输入,效果很好 但当我尝试向Windows发送字符串时,我发现它不能同时发送整个字符串(每次只发送一个字符) 以下是我使用的代码: [DllImport("user32.dll", CharSet = CharSet.Auto)] public static extern uint SendMessage(IntPtr hWnd, int Msg, i

我正在制作一个程序,可以将鼠标点击、键盘输入和字符串发送到游戏窗口(即使该窗口处于非活动状态)

我使用
SendMessage
发送鼠标点击和键盘输入,效果很好

但当我尝试向Windows发送字符串时,我发现它不能同时发送整个字符串(每次只发送一个字符)

以下是我使用的代码:

[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern uint SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);

public static void sendString(IntPtr hWnd, string s)
{
    foreach (char c in s)
    {
        SendMessage(hWnd, (int)WM_CHAR, (int)c, 0);
    }
}

private void button1_Click(object sender, EventArgs e)
{
    sendString(handle, "中文 string");
}
它的工作原理如下:

中
中文
中文 
中文 s
中文 st
……等等

但我期望的是发送“中文 字符串“同时”

我试过:

SendMessage(handle, WM_SETTEXT, 0, "中文 string");
但它会更改窗口标题(游戏是DirectX应用程序,文本框没有自己的句柄)

并尝试:

SendKeys.Send("中文 string");
或者,但这些仅在窗口处于活动状态时起作用

我在谷歌上搜索了很多答案,但仍然找不到最好的方法,我不想使用复制粘贴

那么,是否有一种方法可以通过使用C#将整个字符串同时发送到处于非活动状态的窗口


(我看到有人用EYuYan()编写了一个程序,他的工具可以达到我想要的效果,所以我认为C#一定有解决方案)

使用WM_SETTEXT只能在句柄是子编辑控件的情况下工作。但你已经知道,这在DirectX游戏中并不罕见。for()循环没有什么问题,只要有效。。