如何模拟在最小化的应用程序中按下键而不打开它

本文关键字:应用程序 何模拟 模拟 最小化 | 更新日期: 2023-09-27 18:13:26

我有一个程序,需要将文本文件的每一行发送到应用程序,同时最小化。我能够将文本发送到应用程序,但这会导致它被打开。有没有一种方法可以在最小化应用程序的同时做到这一点?我已经读到,我可以使用postmessage或sendmessage,但不确定如何做到这一点。

public partial class Form1 : Form
{
    [DllImport("user32.dll", EntryPoint = "FindWindow")]
    private static extern IntPtr FindWindow(string lp1, string lp2);
    [DllImport("user32.dll", ExactSpelling = true, CharSet = CharSet.Auto)]
    [return: MarshalAs(UnmanagedType.Bool)]
    private static extern bool SetForegroundWindow(IntPtr hWnd);
    public Form1()
    {
        InitializeComponent();
    }
    private void button1_Click(object sender, EventArgs e)
    {
        IntPtr handle = FindWindow(null, "Application");
        if (!handle.Equals(IntPtr.Zero))
        {
            if (SetForegroundWindow(handle))
            {
                string[] dic = System.IO.File.ReadAllLines(@"text file name");
                foreach (string a in dic)
                {
                    SendKeys.Send(a);
                }
            }
        }
    }
}

如何模拟在最小化的应用程序中按下键而不打开它

从问题中不清楚"发送文本"是什么意思。但是,如果您想在目标应用程序的文本框中设置文本,那么您就很幸运了。

你可以在目标应用程序中获取你想要文本进入的文本框控件的句柄。这将是最困难的部分,因为您必须找出一种方法来区分该文本框与应用程序可能具有的其他文本框(可能使用spy++和试错法的组合)。

一旦你确定了你想要发送文本的文本控件,剩下的就是发送一个WM_SETTEXT消息到其他应用程序的文本框控件。

这里是另一个SO相关问题供您参考:外部应用程序中文本框的SetText。Win32 API