首页 > 后端开发 > C++ > 如何将密钥发送到 .NET 中的后台应用程序?

如何将密钥发送到 .NET 中的后台应用程序?

Susan Sarandon
发布: 2025-01-04 09:52:35
原创
665 人浏览过

How Can I Send Keys to a Background Application in .NET?

将密钥发送到后台应用程序:综合指南

将特定密钥(例如“k”)发送到另一个应用程序的任务,例如记事本,需要对.NET中的进程处理有更深入的了解。让我们深入研究这个问题及其潜在的解决方案。

要将密钥发送到另一个应用程序,该应用程序需要位于前台。在给定的代码中,正在尝试使用 SetForegroundWindow 执行此步骤。但是,实现可能需要进一步完善。

为了在发送密钥之前确保记事本确实是活动窗口,我们应该:

  • 使用 Process.MainWindowHandle 来检索记事本窗口。
  • 使用此句柄调用 SetForegroundWindow 使记事本成为前台

这是代码的增强版本:

[DllImport("User32.dll")]
static extern int SetForegroundWindow(IntPtr point);

Process p = Process.GetProcessesByName("notepad").FirstOrDefault();
if (p != null)
{
    IntPtr h = p.MainWindowHandle;
    SetForegroundWindow(h);
    SendKeys.SendWait("k");
}
登录后复制

如果记事本尚未运行,我们需要启动它并等待它准备好,然后再发送key:

Process p = Process.Start("notepad.exe");
p.WaitForInputIdle();
IntPtr h = p.MainWindowHandle;
SetForegroundWindow(h);
SendKeys.SendWait("k");
登录后复制

值得注意的是,如果记事本以提升的权限启动(例如,以管理员身份)并且您的应用程序不是,SetForegroundWindow 调用可能无法正常工作。在这种情况下,请探索替代方法或相应地调整应用程序权限。

以上是如何将密钥发送到 .NET 中的后台应用程序?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板