c# - 将击键组合发送到背景窗口

标签 c# hook

经过对 Stackoverflow 和谷歌的大量研究,似乎很难使用它的句柄将击键组合发送到后台窗口。比如我要发送CTRL+F,好像sendmessage不行,sendenput也不行,因为窗口需要焦点。

所以我最后的想法是关于 Hook :无论如何都可以使用这种方式发送组合?

最佳答案

好的,我找到了解决方法,但它并不适用于所有应用程序。否则,它可以与 PuTTY 一​​起使用,这是我想通过组合键控制的程序。即使应用程序未获得焦点,它也能正常工作。所以我现在完成了!

class SendMessage
{
[DllImport("user32.dll")]
public static extern IntPtr PostMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);

public static void sendKeystroke()
{
    const uint WM_KEYDOWN = 0x100;
    const uint WM_KEYUP = 0x0101;

    IntPtr hWnd;
    string processName = "putty";
    Process[] processList = Process.GetProcesses();

    foreach (Process P in processList)
    {
        if (P.ProcessName.Equals(processName))
        {
            IntPtr edit = P.MainWindowHandle;
            PostMessage(edit, WM_KEYDOWN, (IntPtr)(Keys.Control), IntPtr.Zero);
            PostMessage(edit, WM_KEYDOWN, (IntPtr)(Keys.A), IntPtr.Zero);
            PostMessage(edit, WM_KEYUP, (IntPtr)(Keys.Control), IntPtr.Zero);
        }
    }                           
}

}

关于c# - 将击键组合发送到背景窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12805345/

相关文章:

c# - 可查询的混淆

c# - 绑定(bind)组合框以显示整数值

c# - 如何获取当前或聚焦的单元格值?

c++ - 为什么必须将 SetWindowsHookEx 与 Windows 消息队列一起使用

Android 在 & 符号后修剪其余的深层链接 URI

javascript - 提交按钮间歇性地起作用

c# - 英孚模型。导航属性只能参与单个关系

android - 如何使用 Cydia Substrate 在 Android 中 Hook C/C++ 方法

save - 如何跳过 Mongoose 预保存钩子(Hook)?

python - 在 Python 中实现钩子(Hook)或回调的首选方法是什么?