小编Vin*_*ntC的帖子

拦截鼠标点击其他程序

我试图拦截来自另一个程序的鼠标点击.我正在为该程序制作一个插件,它在程序上覆盖透明表单并显示其他信息.当我单击表单的透明部分时,我可以单击main程序中的内容.我不希望这种情况发生(至少不是每次都发生 - 有些部分允许你点击,有些部分你不是,但这不是问题).

我现在这样做的方法是使用WH_MOUSE_LL,这工作正常,我可以通过返回非零值来保持鼠标点击进入程序(http://msdn.microsoft.com/en-gb/library /windows/desktop/ms644988(v=vs.85).aspx).

问题是,这使我的主程序滞后,我不需要获取所有鼠标移动的通知,我只想在用户实际点击某些内容时收到通知.有什么方法可以限制WH_MOUSE_LL它,所以只有鼠标点击才会触发吗?(滞后不是因为MouseHookProc方法中的计算- 它除了调用之外当前什么都不做CallNextHookEx(hHook, nCode, wParam, lParam).)

我试图通过使用挂钩消息的全局钩子(http://www.codeproject.com/Articles/18638/Using-Window-Messages-to-Implement-Global-System-H)来解决这个问题WM_MOUSEACTIVATE.我的想法只是WH_MOUSE_LL在收到WM_MOUSEACTIVATE通知时才挂钩.不幸的是WH_MOUSE_LL点击通知之前发送,WM_MOUSEACTIVATE所以这不起作用.

编辑:

@Nanda这里是proc代码:

public int MouseHookProc(int nCode, IntPtr wParam, IntPtr lParam)
{
    return WindowUtility.CallNextHookEx(hHook, nCode, wParam, lParam);
}
Run Code Online (Sandbox Code Playgroud)

正如你所看到的那样,我对它没有做太多的事情,但它已经落后了......

@Cody Gray我对表单处理邮件做了一个非常小的测试:

public class Form1 : Form
{
    private TrackBar m_Trackbar;

    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new Form1());
    }

    public Form1()
    {
        m_Trackbar …
Run Code Online (Sandbox Code Playgroud)

.net c# hook winapi windows-messages

8
推荐指数
1
解决办法
2164
查看次数

标签 统计

.net ×1

c# ×1

hook ×1

winapi ×1

windows-messages ×1