您好,登錄后才能下訂單哦!
小編給大家分享一下C#怎么實現(xiàn)鼠標(biāo)消息捕獲,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
在C#中怎樣禁用鼠標(biāo)按鍵,我們可以通過ImessageFilter接口下的PreFilterMessage方法、Application類的AddMessageFilter方法,RemoveMessageFilter方法和Message結(jié)構(gòu)的Msg屬性來禁用鼠標(biāo)左鍵。Message結(jié)構(gòu)包裝Windows發(fā)送的消息,可使用該結(jié)構(gòu)包裝消息,并將其分配給窗口過程以進(jìn)行調(diào)度,還可以使用該結(jié)構(gòu)獲取系統(tǒng)向應(yīng)用程序或控件發(fā)送的關(guān)于某個消息的信息。
使用PreFilterMessage方法在調(diào)度消息之前將其篩選出來。語法格式如下:
Bool PreFilterMessage(ref Message m)
參數(shù)說明:
m:要調(diào)度的消息,無法修改此消息。
返回值:如果篩選消息并禁止消息被調(diào)度,則為True;如果允許消息繼續(xù)到達(dá)下一個篩選器或控件,則為False。使用AddMessageFilter方法添加消息篩選器以便在向目標(biāo)傳送Windows消息時監(jiān)視這些消息。使RemoveMessageFilter 從應(yīng)用程序的消息泵移除一個消息篩選器。
界面:
代碼實現(xiàn):
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace MouseDemo { public partial class FrmMain : Form,IMessageFilter { public FrmMain() { InitializeComponent(); } public bool PreFilterMessage(ref Message m) { if (m.Msg == 522) { return true; } else { return false; } } /// <summary> /// 窗體加載 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void FrmMain_Load(object sender, EventArgs e) { InitComboBox(); } /// <summary> /// 初始化ComboBox /// </summary> private void InitComboBox() { Dictionary<int, string> dictGrade = new Dictionary<int, string>(); dictGrade.Add(1, "一年級"); dictGrade.Add(2, "二年級"); dictGrade.Add(3, "三年級"); dictGrade.Add(4, "四年級"); dictGrade.Add(5, "五年級"); dictGrade.Add(6, "六年級"); BindingSource dataSource = new BindingSource(); dataSource.DataSource = dictGrade; cmb_Grade.DataSource = dataSource; cmb_Grade.DisplayMember = "Value"; cmb_Grade.ValueMember = "Key"; } /// <summary> /// 索引改變事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void cmb_Grade_SelectedIndexChanged(object sender, EventArgs e) { //添加消息過濾 Application.AddMessageFilter(this); } } }
界面:
代碼:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace MouseRightDemo { public partial class FrmMouseRight : Form ,IMessageFilter { public FrmMouseRight() { InitializeComponent(); } /// <summary> /// 實現(xiàn)方法 /// </summary> /// <param name="m"></param> /// <returns></returns> public bool PreFilterMessage(ref Message m) { //不響應(yīng)鼠標(biāo)右鍵 if (m.Msg >= 516 && m.Msg <= 517) { return true; } else { return false; } } /// <summary> /// 禁用鼠標(biāo)右鍵 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void button1_Click(object sender, EventArgs e) { //添加消息 Application.AddMessageFilter(this); MessageBox.Show("鼠標(biāo)右鍵已被禁止使用", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } /// <summary> /// 解決禁用鼠標(biāo)右鍵 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void button2_Click(object sender, EventArgs e) { //移除消息 Application.RemoveMessageFilter(this); MessageBox.Show("鼠標(biāo)右鍵已被解除禁止使用,可以使用鼠標(biāo)右鍵", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } } }
鼠標(biāo)移動:512
鼠標(biāo)左鍵:
down:513 up:514
double click:515
鼠標(biāo)右鍵:
down:516 up:517
鼠標(biāo)滾輪:522
看完了這篇文章,相信你對“C#怎么實現(xiàn)鼠標(biāo)消息捕獲”有了一定的了解,如果想了解更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。