如何燮从Windows preSS全球鼠标点击事件? [英] How to suppress global mouse click events from windows?

查看:135
本文介绍了如何燮从Windows preSS全球鼠标点击事件?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述


   我正在开发一个基于Windows的应用程序,我想,只要我的应用程序上手应该禁用我的应用程序窗口的形式外鼠标点击事件。

谁能告诉我,我怎么能做到这一点?

在此先感谢。


I am developing a windows based application in which i want that whenever my application get started it should disable mouse click events outside the my application window form.

Can anyone please tell me, how can i achieve that?

Thanks in advance.

编辑:
的形式和SUP pressing点击动作中捕捉鼠标点击事件是容易的,我们只需使用这样的:

Edit :
Catching the mouse click event within the form and suppressing the click action is easy, for that we just use this :

    protected override void WndProc(ref Message m)
    {
        if (m.Msg == (int)MouseMessages.WM_LBUTTONDOWN || m.Msg == (int)MouseMessages.WM_LBUTTONUP)
            MessageBox.Show("Click event caught!");  //return; --for suppress the click event action.
        else
            base.WndProc(ref m);
    }

但如何捕捉到鼠标点击事件的我的应用程序的形式之外?

but how to catch the mouse click event outside of the my app form?

推荐答案

这种方式是可以做到的。它使用了胜利API函数 BlockInput

This way it can be done. It uses the win API function BlockInput.

注:按CTRL + ALT + DELETE重新启用输入。但是其他的鼠标和键盘输入被阻止。

NOTE: CTRL + ALT + DELETE enables the input again. But other mouse and keyboard input is blocked.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {

[return: MarshalAs(UnmanagedType.Bool)]
[DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
public static extern void BlockInput([In, MarshalAs(UnmanagedType.Bool)]bool fBlockIt);

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            this.Show();
            //Blocks the input
            BlockInput(true);
            System.Threading.Thread.Sleep(5000);
            //Unblocks the input
            BlockInput(false); 
        }
    }
}

这篇关于如何燮从Windows preSS全球鼠标点击事件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆