如何将键击发送到隐藏窗口?

时间:2012-02-29 10:59:55

标签: c#

我为CMD.EXE创建一个隐藏的窗口过程,如下所示:

        //  Create the process start window.
        var processStartInfo = new ProcessStartInfo("cmd.exe", null);

        //  Set the options.
        processStartInfo.UseShellExecute = false;
        processStartInfo.ErrorDialog = false;
        processStartInfo.CreateNoWindow = true;
        processStartInfo.WindowStyle = ProcessWindowStyle.Hidden;

        //  Specify redirection.
        processStartInfo.RedirectStandardError = true;
        processStartInfo.RedirectStandardInput = true;
        processStartInfo.RedirectStandardOutput = true;

        //  Create the process.
        currentProcess = new Process();

然后我通过重定向流自己处理所有输入/输出。但是,我希望“tab”显示自动完成数据。我尝试将'\ t'发送到输入流 - 没有快乐。如果窗口可见,我在进程结构中有窗口句柄,可以将其设置为前台并使用“SendKeys”。但这是不可接受的,因为我需要窗口不可见。

那么有没有人知道如何将键击发送到进程ID?

提前致谢!

1 个答案:

答案 0 :(得分:0)

代码项目中有一个项目可以满足您的需求。它是关于如何将密钥发送到另一个应用程序的教程。这确实需要是一个活跃的窗口。

我知道你的窗户需要隐藏,只是将它移到屏幕的可视区域之外吗?所以它仍然可见,但不在可见区域。

http://www.codeproject.com/Articles/18366/Sending-Keystrokes-to-another-Application-in-C

此外,您是否可以直接启动进程而不是调用cmd.exe。

例如,调用ipconfig.exe而不是cmd.exe并发送ipconfig.exe按键。