tft每日頭條

 > 圖文

 > c語言鍵盤控制移動

c語言鍵盤控制移動

圖文 更新时间:2025-01-10 10:14:56

前面兩篇都在寫關于鍵盤的監聽操作以及衍生的一些自定義處理,這篇寫一下關于鼠标的監聽操作。

雖然我們一般情況下鼠标用得比較多,但是比起來,反而鍵盤監聽的功能比較實用,而鼠标感覺沒什麼監聽的必要,但是如果你接觸過自動化操作腳本之類的話,會發現其實鼠标監聽的作用更大;通過這幾篇内容,我想我們可以整合一下,做一個簡單的操作錄制功能,用來解決一下日常的繁瑣且循環的操作,這個功能之前有發過一個簡單的版本,但不是通過HOOK去實現的,而是讓用戶自己手動錄制,再去執行。

使用HOOK的話,直接監聽一遍用戶的操作,記錄相應的動作即可,同時可操作性也有很大提高(emmmm,我覺得回頭有時間我自己先封裝下,可能用途還不小,同時想起之前寫的關鍵字查詢的工具,以為隻是偶爾之需,萬萬沒想到它在我生活、工作中也幫了我很多。。。)

c語言鍵盤控制移動(C監聽鼠标操作)1

這裡代碼隻是做了簡單的事件記錄,其他操作可根據需求自行處理。

HOOK的工具類可參考前面的文章,這裡不贅述,貼下需要更改的代碼。

實現功能:

使用C#監聽鼠标的按下、彈起等事件

開發環境:

開發工具: Visual Studio 2013

.NET Framework版本:4.5

實現代碼:

/// <summary> /// 鼠标結構 /// </summary> [StructLayout(LayoutKind.Sequential)] public class MouseHookStruct { public POInt pt; // 鼠标位置 public int hWnd; public int wHitTestCode; public int dwExtraInfo; } /// <summary> /// 鼠标位置結構 /// </summary> [StructLayout(LayoutKind.Sequential)] public class POINT { public int x; public int y; } //定義為鼠标鈎子 public int WH_MOUSE_LL = 14; //相關鼠标事件 public event MouseEventHandler MouseDown; public event MouseEventHandler MouseUp; //相關動作 public const int WM_MOUSEMOVE = 0x200; // 鼠标移動 public const int WM_LBUTTONDOWN = 0x201;// 鼠标左鍵按下 public const int WM_RBUTTONDOWN = 0x204;// 鼠标右鍵按下 public const int WM_MBUTTONDOWN = 0x207;// 鼠标中鍵按下 public const int WM_LBUTTONUP = 0x202;// 鼠标左鍵擡起 public const int WM_RBUTTONUP = 0x205;// 鼠标右鍵擡起 public const int WM_MBUTTONUP = 0x208;// 鼠标中鍵擡起 //hookid private int hookID = 0; private int MouseHookProc(int nCode, int wParam, IntPtr lParam) { if ((nCode >= 0)) { MouseHookStruct hookStruct = (MouseHookStruct)Marshal.PtrToStructure(lParam, typeof(MouseHookStruct)); MouseEventArgs e = null; switch (wParam) { case WM_LBUTTONDOWN: e = new MouseEventArgs(MouseButtons.Left, 1, hookStruct.pt.x, hookStruct.pt.y, 0); MouseDown(this, e); break; case WM_RBUTTONDOWN: e = new MouseEventArgs(MouseButtons.Right, 1, hookStruct.pt.x, hookStruct.pt.y, 0); MouseDown(this, e); break; case WM_LBUTTONUP: e = new MouseEventArgs(MouseButtons.Left, 1, hookStruct.pt.x, hookStruct.pt.y, 0); MouseUp(this, e); break; case WM_RBUTTONUP: e = new MouseEventArgs(MouseButtons.Right, 1, hookStruct.pt.x, hookStruct.pt.y, 0); MouseUp(this, e); break; default: break; } } return CallNextHookEx(hookID, nCode, wParam, lParam); }

private void MouseDown(object sender, MouseEventArgs e) { listBox1.Items.Add(string.Format("在{0},{1}位置按下了鼠标{2}鍵", e.X, e.Y, e.Button.ToString())); } private void MouseUp(object sender, MouseEventArgs e) { listBox1.Items.Add(string.Format("在{0},{1}位置松開了鼠标{2}鍵", e.X, e.Y, e.Button.ToString())); } HookUtil keyHook = new HookUtil(); private void btnBegin_Click(object sender, EventArgs e) { keyHook.MouseDown = new MouseEventHandler(MouseDown); keyHook.MouseUp = new MouseEventHandler(MouseUp); keyHook.StartHook(); btnBegin.Enabled = false; btnEnd.Enabled = true; }

實現效果:

c語言鍵盤控制移動(C監聽鼠标操作)2

由簡入繁,拿來即用

更多精彩,請持續關注

V:Csharp 小記

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关圖文资讯推荐

热门圖文资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved