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

C#實(shí)現(xiàn)的鼠標(biāo)鉤子

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

C#實(shí)現(xiàn)的鼠標(biāo)鉤子,可以獲取鼠標(biāo)在屏幕中的坐標(biāo),記得要以管理員權(quán)限運(yùn)行才行

復(fù)制代碼 代碼如下:

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);
        //調(diào)用下一個(gè)鉤子
        [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);
            }
        }
    }
}

演示:

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

相關(guān)文章

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

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

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

    Unity3D移動(dòng)端實(shí)現(xiàn)搖一搖功能

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

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

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

    c#實(shí)現(xiàn)的操作oracle通用類

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

    C#實(shí)現(xiàn)凍結(jié)Excel窗口以鎖定行列或解除凍結(jié)

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

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

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

    如何使用LinQ To Object把數(shù)組或DataTable中的數(shù)據(jù)進(jìn)行向上匯總

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

    WinForm調(diào)用百度地圖接口用法示例

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

    C#基于SerialPort類實(shí)現(xiàn)串口通訊詳解

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

    C#實(shí)現(xiàn)冒泡排序算法的代碼示例

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

最新評論

朔州市| 县级市| 新竹市| 河北省| 乐业县| 铜梁县| 孝感市| 大化| 无为县| 浏阳市| 宝兴县| 二连浩特市| 伊吾县| 定兴县| 石首市| 苏尼特右旗| 九龙坡区| 宝清县| 皋兰县| 漾濞| 福州市| 清丰县| 恩平市| 迁安市| 太谷县| 洛南县| 疏勒县| 加查县| 竹北市| 东方市| 西安市| 炎陵县| 云和县| 贵溪市| 修武县| 大同县| 屯门区| 三门县| 应用必备| 邻水| 通海县|