<em id="0a85b"><option id="0a85b"></option></em>

<abbr id="0a85b"></abbr>

      <nobr id="0a85b"></nobr>
        <tr id="0a85b"></tr>
        9久久伊人精品综合,亚洲一区精品视频在线,成 人免费va视频,国产一区二区三区黄网,99国产精品永久免费视频,亚洲毛片多多影院,精品久久久无码人妻中文字幕,无码国产欧美一区二区三区不卡
        學習啦 > 學習電腦 > 電腦硬件知識 > 鍵盤鼠標 > js獲取桌面鼠標鍵盤事件怎么實現

        js獲取桌面鼠標鍵盤事件怎么實現

        時間: 沈迪豪908 分享

        js獲取桌面鼠標鍵盤事件怎么實現

          學習前端的同學你們知道怎么你們知道獲取桌面鼠標鍵盤事件怎么實現嗎?不知道的話跟著學習啦小編一起來學習了解獲取桌面鼠標鍵盤事件吧。

          獲取桌面鼠標鍵盤事件的代碼

          using System;

          using System.Collections.Generic;

          using System.Linq;

          using System.Text;

          using System.Windows.Forms;

          using System.Runtime.InteropServices;

          using System.Reflection;

          namespace UDPService

          {

          /// <summary>

          ///

          /// </summary>

          [StructLayout(LayoutKind.Sequential)]

          public class POINT

          {

          public int x;

          public int y;

          }

          /// <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 KeyboardHookStruct

          {

          public int vkCode;

          public int scanCode;

          public int flags;

          public int time;

          public int dwExtraInfo;

          }

          /// <summary>

          ///

          /// </summary>

          public class GlobalHook

          {

          public delegate int HookProc(int nCode, Int32 wParam, IntPtr lParam);

          public GlobalHook()

          {

          Start();

          }

          ~GlobalHook()

          {

          Stop();

          }

          public event MouseEventHandler OnMouseActivity;

          public event KeyEventHandler KeyDown;

          public event KeyPressEventHandler KeyPress;

          public event KeyEventHandler KeyUp;

          public delegate int GlobalHookProc(int nCode, Int32 wParam, IntPtr lParam);

          static int hMouseHook = 0;

          static int hKeyboardHook = 0;

          public const int WH_MOUSE_LL = 14;

          public const int WH_KEYBOARD_LL = 13;

          GlobalHookProc MouseHookProcedure;

          GlobalHookProc KeyboardHookProcedure;

          [DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]

          public static extern int SetWindowsHookEx(int idHook, GlobalHookProc 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,

          Int32 wParam, IntPtr lParam);

          public void Start()

          {

          if (hMouseHook == 0)

          {

          MouseHookProcedure = new GlobalHookProc(MouseHookProc);

          try

          {

          hMouseHook = SetWindowsHookEx(WH_MOUSE_LL,

          MouseHookProcedure,

          Marshal.GetHINSTANCE(

          Assembly.GetExecutingAssembly().GetModules()[0]),

          0);

          }

          catch (Exception err)

          { }

          if (hMouseHook == 0)

          {

          Stop();

          throw new Exception("SetWindowsHookEx failed.");

          }

          }

          if (hKeyboardHook == 0)

          {

          KeyboardHookProcedure = new GlobalHookProc(KeyboardHookProc);

          try

          {

          hKeyboardHook = SetWindowsHookEx(WH_KEYBOARD_LL,

          KeyboardHookProcedure,

          Marshal.GetHINSTANCE(

          Assembly.GetExecutingAssembly().GetModules()[0]),

          0);

          }

          catch (Exception err2)

          { }

          if (hKeyboardHook == 0)

          {

          Stop();

          throw new Exception("SetWindowsHookEx ist failed.");

          }

          }

          }

          public void Stop()

          {

          bool retMouse = true;

          bool retKeyboard = true;

          if (hMouseHook != 0)

          {

          retMouse = UnhookWindowsHookEx(hMouseHook);

          hMouseHook = 0;

          }

          if (hKeyboardHook != 0)

          {

          retKeyboard = UnhookWindowsHookEx(hKeyboardHook);

          hKeyboardHook = 0;

          }

          if (!(retMouse && retKeyboard))

          throw new Exception("UnhookWindowsHookEx failed.");

          }

          private const int WM_MOUSEMOVE = 0x200;

          private const int WM_LBUTTONDOWN = 0x201;

          private const int WM_RBUTTONDOWN = 0x204;

          private const int WM_MBUTTONDOWN = 0x207;

          private const int WM_LBUTTONUP = 0x202;

          private const int WM_RBUTTONUP = 0x205;

          private const int WM_MBUTTONUP = 0x208;

          private const int WM_LBUTTONDBLCLK = 0x203;

          private const int WM_RBUTTONDBLCLK = 0x206;

          private const int WM_MBUTTONDBLCLK = 0x209;

          private int MouseHookProc(int nCode, Int32 wParam, IntPtr lParam)

          {

          if ((nCode >= 0) && (OnMouseActivity != null))

          {

          MouseButtons button = MouseButtons.None;

          switch (wParam)

          {

          case WM_LBUTTONDOWN:

          //case WM_LBUTTONUP:

          //case WM_LBUTTONDBLCLK:

          button = MouseButtons.Left;

          break;

          case WM_RBUTTONDOWN:

          //case WM_RBUTTONUP:

          //case WM_RBUTTONDBLCLK:

          button = MouseButtons.Right;

          break;

          }

          int clickCount = 0;

          if (button != MouseButtons.None)

          if (wParam == WM_LBUTTONDBLCLK || wParam == WM_RBUTTONDBLCLK)

          clickCount = 2;

          else

          clickCount = 1;

          MouseHookStruct MyMouseHookStruct =

          (MouseHookStruct)Marshal.PtrToStructure(lParam, typeof(MouseHookStruct));

          MouseEventArgs e = new MouseEventArgs(

          button,

          clickCount,

          MyMouseHookStruct.pt.x,

          MyMouseHookStruct.pt.y,

          0);

          OnMouseActivity(this, e);

          }

          return CallNextHookEx(hMouseHook, nCode, wParam, lParam);

          }

          [DllImport("user32")]

          public static extern int ToAscii(int uVirtKey,

          int uScanCode,

          byte[] lpbKeyState,

          byte[] lpwTransKey,

          int fuState);

          [DllImport("user32")]

          public static extern int GetKeyboardState(byte[] pbKeyState);

          private const int WM_KEYDOWN = 0x100;

          private const int WM_KEYUP = 0x101;

          private const int WM_SYSKEYDOWN = 0x104;

          private const int WM_SYSKEYUP = 0x105;

          private int KeyboardHookProc(int nCode, Int32 wParam, IntPtr lParam)

          {

          if ((nCode >= 0) && (KeyDown != null || KeyUp != null || KeyPress != null))

          {

          KeyboardHookStruct MyKeyboardHookStruct =

          (KeyboardHookStruct)Marshal.PtrToStructure(lParam,

          typeof(KeyboardHookStruct));

          if (KeyDown != null && (wParam == WM_KEYDOWN || wParam == WM_SYSKEYDOWN))

          {

          Keys keyData = (Keys)MyKeyboardHookStruct.vkCode;

          KeyEventArgs e = new KeyEventArgs(keyData);

          KeyDown(this, e);

          }

          if (KeyPress != null && wParam == WM_KEYDOWN)

          {

          byte[] keyState = new byte[256];

          GetKeyboardState(keyState);

          byte[] inBuffer = new byte[2];

          if (ToAscii(MyKeyboardHookStruct.vkCode,

          MyKeyboardHookStruct.scanCode,

          keyState,

          inBuffer,

          MyKeyboardHookStruct.flags) == 1)

          {

          KeyPressEventArgs e = new KeyPressEventArgs((char)inBuffer[0]);

          KeyPress(this, e);

          }

          }

          if (KeyUp != null && (wParam == WM_KEYUP || wParam == WM_SYSKEYUP))

          {

          Keys keyData = (Keys)MyKeyboardHookStruct.vkCode;

          KeyEventArgs e = new KeyEventArgs(keyData);

          KeyUp(this, e);

          }

          }

          return CallNextHookEx(hKeyboardHook, nCode, wParam, lParam);

          }

          }

          }

        猜你喜歡:

        1.怎么用js獲取鼠標移動坐標

        2.怎么實現js跨瀏覽器獲取鼠標按鍵的值

        3.js怎么獲取鼠標在div中的相對位置

        4.win8.1 rtm有什么改進

        5.怎么用js實現簡單鼠標跟隨效果

        6.如何設置桌面鼠標圖案

        2006955 主站蜘蛛池模板: 久久99精品久久久久久动态图 | 國产AV天堂| 九九热在线免费播放视频| 狠狠躁夜夜躁人人爽天天5| 99久久精品费精品国产一区二| 亚洲国产系列| 精品久久综合1区2区3区激情| 欧美亚洲另类制服卡通动漫| 久久88香港三级台湾三级播放| 你懂的视频在线一区二区| 激情亚洲内射一区二区三区 | 中文字幕国产在线精品| 疯狂做受XXXX高潮国产| 日本熟妇XXXX潮喷视频| 人妻精品久久无码专区精东影业| 人妻夜夜爽天天爽三区丁香花| 欧美日韩在线第一页免费观看| 蜜桃AV抽搐高潮一区二区| 国产 | 久你欧洲野花视频欧洲1| 伊在人亚洲香蕉精品区| 乱女乱妇熟女熟妇综合网| 国产偷国产偷亚洲综合av| 亚洲AV国产福利精品在现观看| 无码天堂亚洲国产AV| 国产成人美女AV| 你懂的视频在线一区二区| 亚洲欧美综合精品成人网站| h无码精品3d动漫在线观看| 伊大人香蕉久久网欧美| 色综合欧美五月俺也去| 成人污视频| 在线播放亚洲成人av| 少妇夜夜春夜夜爽试看视频| 成人麻豆精品激情视频在线观看| 国产AV一区二区精品久久凹凸| 国产在线精品福利91香蕉| 日韩av综合免费在线| 老司机aⅴ在线精品导航| 五月综合网亚洲乱妇久久| 亚洲av本道一区二区| 国产69精品久久久久久妇女迅雷 |