最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#實現的鼠標鉤子

 更新時間:2015年03月11日 14:33:47   投稿:hebedich  
本文給大家分享的是使用C#實現鼠標鉤子功能,程序已能獲取鼠標坐標,其他就沒別的功能了,有需要的小伙伴參考下吧。

C#實現的鼠標鉤子,可以獲取鼠標在屏幕中的坐標,記得要以管理員權限運行才行

復制代碼 代碼如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Text;
using System.Windows.Forms;
namespace app01
{
    public partial class Form1 : Form
    {
        public delegate int HookProc(int nCode, IntPtr wParam, IntPtr lParam);
        //定義鉤子句柄
        public static int hHook = 0;
        //定義鉤子類型
        public const int WH_MOUSE_LL = 14;
        public HookProc MyProcedure;
        //安裝鉤子
        [DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
        public static extern int SetWindowsHookEx(int idHook, HookProc lpfn, IntPtr hInstance, int threadId);
        //卸載鉤子
        [DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
        public static extern bool UnhookWindowsHookEx(int idHook);
        //調用下一個鉤子
        [DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
        public static extern int CallNextHookEx(int idHook, int nCode, IntPtr wParam, IntPtr lParam);
        [StructLayout(LayoutKind.Sequential)]
        public class POINT
        {
            public int x;
            public int y;
        }
        [StructLayout(LayoutKind.Sequential)]
        public class MouseHookStruct
        {
            public POINT pt;
            public int hwnd;
            public int wHitTestCode;
            public int dwExtraInfo;
        }
        public Form1()
        {
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            if (hHook == 0)
            {
                MyProcedure = new HookProc(this.MouseHookProc);
                //這里掛節(jié)鉤子
                hHook = SetWindowsHookEx(WH_MOUSE_LL, MyProcedure, Marshal.GetHINSTANCE(Assembly.GetExecutingAssembly().GetModules()[0]), 0);
                if (hHook == 0)
                {
                    MessageBox.Show("SetWindowsHookEx Failed");
                    return;
                }
                button1.Text = "卸載鉤子";
            }
            else
            {
                bool ret = UnhookWindowsHookEx(hHook);
                if (ret == false)
                {
                    MessageBox.Show("UnhookWindowsHookEx Failed");
                    return;
                }
                hHook = 0;
                button1.Text = "安裝鉤子";
            }
        }
        public int MouseHookProc(int nCode, IntPtr wParam, IntPtr lParam)
        {
            MouseHookStruct MyMouseHookStruct = (MouseHookStruct)Marshal.PtrToStructure(lParam, typeof(MouseHookStruct));
            if (nCode < 0)
            {
                return CallNextHookEx(hHook, nCode, wParam, lParam);
            }
            else
            {
                String strCaption = "x = " + MyMouseHookStruct.pt.x.ToString("d") + "  y = " + MyMouseHookStruct.pt.y.ToString("d");
                this.Text = strCaption;
                return CallNextHookEx(hHook, nCode, wParam, lParam);
            }
        }
    }
}

演示:

以上就是本文所述的全部內容了,希望大家能夠喜歡。

相關文章

  • C# Newtonsoft.Json庫的常用屬性和方法詳解

    C# Newtonsoft.Json庫的常用屬性和方法詳解

    Newtonsoft.Json(也稱為Json.NET)是一個非常流行的用于處理JSON數據的庫,它提供了豐富的屬性和方法,用于序列化和反序列化JSON數據,下面將通過C#代碼詳細講解一些常用的屬性和方法,并提供詳細的代碼注釋,需要的朋友可以參考下
    2025-03-03
  • Unity3D移動端實現搖一搖功能

    Unity3D移動端實現搖一搖功能

    這篇文章主要為大家詳細介紹了基于Unity3D移動端實現搖一搖功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • C# 分支與循環(huán)介紹

    C# 分支與循環(huán)介紹

    在C# 程序中有三種結構: 順序結構,分支結構,循環(huán)結構。
    2013-04-04
  • c#實現的操作oracle通用類

    c#實現的操作oracle通用類

    這篇文章主要介紹了c#實現的操作oracle通用類,用來操作oracle數據庫十分的方便,需要的朋友可以參考下
    2014-08-08
  • C#實現凍結Excel窗口以鎖定行列或解除凍結

    C#實現凍結Excel窗口以鎖定行列或解除凍結

    在處理大型Excel工作簿時,有時候我們需要在工作表中凍結窗格,這樣可以在滾動查看數據的同時保持某些行或列固定不動,下面我們就來看看如何使用C#實現凍結Excel窗口吧
    2024-04-04
  • C#使用CEFSharp獲取動態(tài)網頁源碼的演示步驟

    C#使用CEFSharp獲取動態(tài)網頁源碼的演示步驟

    CEFSharp是一個用C#編寫的庫,它是Chromium Embedded Framework (CEF) 的.NET封裝和擴展,CEF允許開發(fā)者在自己的應用程序中嵌入一個功能強大的HTML渲染引擎,從而能夠呈現網頁內容,本文介紹了C#如何使用CEFSharp獲取動態(tài)網頁源碼,需要的朋友可以參考下
    2024-08-08
  • 如何使用LinQ To Object把數組或DataTable中的數據進行向上匯總

    如何使用LinQ To Object把數組或DataTable中的數據進行向上匯總

    這篇文章主要介紹了如何使用LinQ To Object把數組或DataTable中的數據進行向上匯總,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-12-12
  • WinForm調用百度地圖接口用法示例

    WinForm調用百度地圖接口用法示例

    這篇文章主要介紹了WinForm調用百度地圖接口用法,結合具體實例形式簡單分析了WinForm WebBrower控件與前端百度接口交互的相關操作技巧,需要的朋友可以參考下
    2017-06-06
  • C#基于SerialPort類實現串口通訊詳解

    C#基于SerialPort類實現串口通訊詳解

    這篇文章主要為大家詳細介紹了C#基于SerialPort類實現串口通訊,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • C#實現冒泡排序算法的代碼示例

    C#實現冒泡排序算法的代碼示例

    冒泡排序即是對數組每次輪循出最大數或最小數放在隊尾,這里我們來看一下C#實現冒泡排序算法的代碼示例,需要的朋友可以參考下
    2016-07-07

最新評論

阜康市| 正阳县| 洛扎县| 来宾市| 凤山市| 马尔康县| 山西省| 房产| 九龙城区| 洛隆县| 抚顺县| 石景山区| 寻甸| 疏勒县| 深水埗区| 永嘉县| 嘉定区| 星子县| 油尖旺区| 鄂托克旗| 永定县| 陇南市| 扶余县| 旬阳县| 湘西| 华宁县| 太康县| 松阳县| 东丰县| 疏勒县| 凤阳县| 临沂市| 大同县| 东安县| 武隆县| 洛南县| 宁武县| 宣威市| 桓仁| 怀柔区| 石林|