通过向命令窗口发送击键来注入命令?

发布于 2024-11-07 04:10:45 字数 94 浏览 4 评论 0原文

我有一个运行基于网络的软件的命令提示符窗口。我想用 C# 编写一个程序,将命令注入到正在运行的命令提示符窗口中。

有什么指点吗?

谢谢,保罗。

I have a command prompt window that runs a web based piece of software. I want to make a program in C# that injects commands into the running command prompt window.

Any pointers?

Thanks, Paul.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

初见你 2024-11-14 04:10:45

快速而肮脏的方法:

使用 SetFocus将焦点设置到 cmd 窗口,然后使用 SendInput 将击键发送到 cmd 窗口。

您可以使用 P/Invoke 定义从 c# 调用 SendInput

[DllImport("user32.dll", SetLastError=true)]
static extern uint SendInput(uint nInputs, ref INPUT pInputs, int cbSize);

this 用于 SetFocus

[DllImport("user32.dll")]
static extern IntPtr SetFocus(IntPtr hWnd);

为了获取您所需的窗口句柄SetFocus,您可以使用 FindWindow 或者使用 < 获取适当的 cmd 进程code>Process.GetProcessesByName,然后使用 MainWindowHandle 属性。

Quick and dirty method:

use SetFocus to set the focus to the cmd window, then use SendInput to send keystrokes to the cmd window.

You can use this P/Invoke definition to call SendInput from c#:

[DllImport("user32.dll", SetLastError=true)]
static extern uint SendInput(uint nInputs, ref INPUT pInputs, int cbSize);

and this one for SetFocus

[DllImport("user32.dll")]
static extern IntPtr SetFocus(IntPtr hWnd);

In order to get the window handle that you required for SetFocus, you can use FindWindow or perhaps get the appropriate cmd process using Process.GetProcessesByName and then use the MainWindowHandle property.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文