首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将Ctrl +G发送到另一个应用程序?

如何将Ctrl +G发送到另一个应用程序?
EN

Stack Overflow用户
提问于 2020-06-02 06:31:24
回答 1查看 203关注 0票数 0

我尝试在ForegroundWindow中使用InputSimulator发送CTRL +G键,但它不起作用。对于其他键,它按预期工作,例如Ctrl +A或Ctrl +C

hotkeys menu options

我已经尝试过了:

代码语言:javascript
复制
Process[] p = Process.GetProcessesByName("notepad");
if (p != null && p.Length > 0)
{
    IntPtr h = p[0].MainWindowHandle;
    SetForegroundWindow(h);
    InputSimulator sim = new InputSimulator();
    sim.Keyboard.ModifiedKeyStroke (VirtualKeyCode.CONTROL, VirtualKeyCode.VK_G) .Sleep (300);
 }

代码语言:javascript
复制
 Process[] p = Process.GetProcessesByName("notepad");
 if (p != null && p.Length > 0)
 {
    IntPtr h = p[0].MainWindowHandle;
    SetForegroundWindow(h);
    InputSimulator sim = new InputSimulator();
    sim.Keyboard.KeyDown(VirtualKeyCode.CONTROL);
    sim.Keyboard.KeyPress(VirtualKeyCode.VK_G).Sleep(300);
    sim.Keyboard.KeyUp(VirtualKeyCode.CONTROL).Sleep(300);
}

还可以尝试:

代码语言:javascript
复制
SendKeys.Send ("^ (g)");

我甚至尝试过keybd_event (user32.dll函数)

EN

回答 1

Stack Overflow用户

发布于 2020-06-02 06:50:39

在发送击键之前,您需要强制另一个窗口成为焦点。微软文档中有详细说明此过程的示例-- link

简而言之,它们先使用FindWindow,然后使用SetForegroundWindow,然后通过SendKeys.SendWait()发送密钥,不过您也可以选择使用SendKeys.Send()

This answer看起来像是FindWindow + SetForegroundWindow流程的简明实现。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62142003

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档