使用C#

时间:2015-11-08 15:59:06

标签: c# winapi sendmessage

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

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

但是当我尝试将字符串发送到窗口时,我发现它不能同时发送整个字符串(每次只发送一个字符串)。

这是我正在使用的代码:

[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");

Douglas's answer,但这些仅在窗口处于活动状态时有效。

我用Google搜索了很多答案,仍然找不到最好的方法,而且我不想使用copy&糊。

那么,如果有办法将整个字符串同时发送到使用C#处于非活动状态的窗口?

(我看到有人通过使用EYuYan(易語言)制作了一个程序,他的工具可以达到我想要的效果,所以我认为必须有一个C#的解决方案。

0 个答案:

没有答案