当前位置: 首页 > news >正文

教做宝宝衣服的网站百度网址大全 官网首页

教做宝宝衣服的网站,百度网址大全 官网首页,装修网站vr全景图怎么做,单页面优化的重点一、简述 某些应用,我们希望全局自定义热键。按键少了会和别的应用程序冲突,按键多了可定用户操作不变。因此我计划左手用CtrlAlt,右手用鼠标右键呼出我自定义的菜单。 我使用键盘和鼠标事件进行简单测试(Ctrl鼠标右键&#xff…

一、简述

某些应用,我们希望全局自定义热键。按键少了会和别的应用程序冲突,按键多了可定用户操作不变。因此我计划左手用Ctrl+Alt,右手用鼠标右键呼出我自定义的菜单。

我使用键盘和鼠标事件进行简单测试(Ctrl+鼠标右键),发现并不能成功。

RegisterHotKey(hWnd, HOTKEY_ID, (int)Modifiers.Control, (int)Keys.RButton);

因此只好使用“钩子”。

二、添加引用

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Diagnostics;

三、定义变量

private const int WH_MOUSE_LL = 14;
private const int WM_RBUTTONDOWN = 0x0204;
private const int VK_CONTROL = 0x11;
private const int VK_MENU = 0x12;
private HookProc mouseProc;
private IntPtr hookId = IntPtr.Zero;
public event EventHandler HotkeyPressed;

四、编写过程

private IntPtr SetMouseHook(HookProc proc)
{using (Process curProcess = Process.GetCurrentProcess())using (ProcessModule curModule = curProcess.MainModule){return SetWindowsHookEx(WH_MOUSE_LL, proc, GetModuleHandle(curModule.ModuleName), 0);}
}
private IntPtr MouseHookCallback(int nCode, IntPtr wParam, IntPtr lParam)
{if (nCode >= 0 && wParam == (IntPtr)WM_RBUTTONDOWN){int ctrl_keyState = GetAsyncKeyState(VK_CONTROL);int alt_keyState = GetAsyncKeyState(VK_MENU);// 检查Ctrl键和Alt键是否同时按下if ((ctrl_keyState < 0) & (alt_keyState < 0)) {HotkeyPressed?.Invoke(this, EventArgs.Empty);// 返回非零值以阻止事件传递给其他窗口return new IntPtr(1);}}return CallNextHookEx(hookId, nCode, wParam, lParam);
}
private delegate IntPtr HookProc(int code, IntPtr wParam, IntPtr lParam);
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
private static extern IntPtr SetWindowsHookEx(int idHook, HookProc lpfn, IntPtr hMod, uint dwThreadId);[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
private static extern bool UnhookWindowsHookEx(IntPtr hhk);[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
private static extern IntPtr CallNextHookEx(IntPtr hhk, int nCode, IntPtr wParam, IntPtr lParam);[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
private static extern IntPtr GetModuleHandle(string lpModuleName);[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
private static extern short GetAsyncKeyState(int vKey);private void HotkeyExample_HotkeyPressed(object sender, EventArgs e)
{Console.WriteLine("Ctrl+Alt+鼠标右键被按下");// 可以执行其他操作...if (this.WindowState == FormWindowState.Minimized){POINT M_Point = GetMousePosition();this.WindowState = FormWindowState.Normal;}else{this.WindowState = FormWindowState.Minimized;}
}

五、调用

private void Form1_Load(object sender, EventArgs e)
{this.HotkeyPressed += HotkeyExample_HotkeyPressed;mouseProc = MouseHookCallback;hookId = SetMouseHook(mouseProc);}
private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{UnhookWindowsHookEx(hookId);
}

六、运行效果

 通过以上代码,自定义窗体顺利弹出,而且并不会与别的程序冲突,满足了需求。

http://www.15wanjia.com/news/46468.html

相关文章:

  • 虚拟主机做视频网站可以吗外贸网络营销平台
  • 代理网址在线全网seo
  • 做网站详细步骤直链平台
  • 手机网站建设公司电话咨询统计网站流量的网站
  • 东莞专业微网站建设价格站长工具seo推广秒收录
  • 手机动态网站制作爬虫搜索引擎
  • 电商网站用什么做的网站的推广平台有哪些
  • githuub怎么做网站网推什么平台好用
  • 帮别人做网站交税西安优化网站公司
  • 穿着丝袜做会更爽网站杭州百度seo优化
  • 做风筝网站seo咨询推广
  • 郑州网站建设 seoseo站外优化最主要的是什么
  • 做房地产网站建设软文营销ppt
  • axure怎么做网站悬浮导航免费建站平台哪个好
  • 如何运营一个行业网站巨量千川广告投放平台
  • 烟台教育网站建设网站优化外包顾问
  • 哪里有做外贸网站的企业管理培训课程费用
  • 建设银行贷款业务网站知乎seo排名帝搜软件
  • 网站面包屑导航代码平台广告推广
  • 网站自定义代码如何制作个人网站
  • wordpress改网站名字微商引流被加方法精准客源
  • 河南seo推广平台seo软件下载
  • 大专网站建设的论文范文b站推广入口2023年
  • 女的和男做那个视频网站专门做网站的公司
  • 微信手机网站支付怎么做友情手机站
  • 如何做网站滚动条网络宣传方式
  • unity做网站网站建设技术外包
  • 企业网站如何备案流程专门做推广的软文
  • 甘肃省住房和城乡建设厅注册中心网站seo运营推广
  • 网站建设ppt介绍河南百度seo