標籤:
在c#中怎樣禁用滑鼠左鍵的使用,其實我們可以通過ImessageFilter介面下的PreFilterMessage方法、Application類的AddMessageFilter方法,RemoveMessageFilter方法和Message結構的Msg屬性來禁用滑鼠左鍵。Message結構封裝Windows發送的訊息,可使用該結構封裝訊息,並將其分配給視窗過程以進行調度,還可以使用該結構擷取系統嚮應用程式或控制項發送的關於某個訊息的資訊。
使用PreFilterMessage方法在調度訊息之前將其篩選出來。文法格式如下:
Bool PreFilterMessage(refMessage m)
參數說明:
m:要調度的訊息,無法修改此訊息。
傳回值:如果篩選訊息並禁止訊息被調度,則為True;如果允許訊息繼續到達下一個篩選器或控制項,則為False。使用AddMessageFilter方法添加訊息篩選器以便在向目標傳送Windows訊息時監視這些訊息。使RemoveMessageFilter 從應用程式的訊息泵移除一個訊息篩選器。
下面給出大家一下主要代碼:
Public partial class Form1:Form,ImessageFilter
{
Public Form1()
{
InitializeComponent();
}
Public bool PreFilterMessage(ref System.Windows.Forms.Message MyMessage)
{
//不響應滑鼠左鍵訊息
If(MyMessage.Msg>=513 && MyMessage.Msg<=515)
{
Return true;
}
Return false;
}
Private voi button1_Click(object sender,EventArgs e)
{
Application.AddMessageFilter(this);
MessageBox.show(“滑鼠左鍵已經被禁止,請用Tab鍵執行操作”,”資訊提示”,
MessageBoxButtons.OK,MessageBoxIcn.Information);
}
Private void button2_Click(object sender,EventArgs e)
{
Application.RemoveMessageFilter(this);
MessageBox.Show(“滑鼠左鍵已經被解禁,可以執行操作!”,”資訊提示”,
MessageBoxButtons.OK,messageBoxIcon.Information)
}
}
滑鼠移動:512
滑鼠左鍵:
down:513
up: 514
double click:515
滑鼠右鍵:
down:516
up:517
滑鼠滾輪:522
C#通過IMessageFilter捕獲滑鼠訊息(轉載)