基于.net实现F4一键杀死指定进程(龙之谷秒掉器)
端游龙之谷有热键一键关闭游戏进程实现紧急掉线的需求(圈内称秒掉器)。国服更新客户端从32位变64位后以前的秒掉器不可用。2021年4月自己无C#基础花一周实现了该功能。前后迭代了几个版本,见B站该专栏的记录。简易秒掉器界面如下:
由于是我自己的专栏,直接将关键内容转载至此处如下:
第一版:.net Core 3.1 WPF和进程管理API+ RegisterHotKey
这是模仿好友发给我的秒掉写的,写好之后发现要装.net Core或者.net Framework的运行时库,其他人使用起来不便。第一、第二版本都写好后测试,F4秒掉只能在龙之谷游戏窗口没有获得焦点时生效。后续发现是因为用user32.dll中的RegisterHotKey这个API的局限。第二版:Windows窗体和进程管理API + RegisterHotKey
用Windows自带的GUI组件,不用装任何额外的库,问题跟第一版一样,F4秒掉只能在龙之谷游戏窗口没有获得焦点时生效。而且这个版本跟其他两版相比,感受到从按下F4到游戏秒退这段时间有较明显的延时。估计是进程管理API之间的性能差异导致的。第三版:.net Framework 4.8 WPF和进程管理API + SetWindowsHookEx
支持全局F4热键秒掉,包括龙之谷游戏进程获得焦点时。唯一的缺点是不能连续快速按F4,会导致系统假死,一段时间后秒掉程序被系统强制移除钩子并强制退出。由于初次接触钩子,不明白是何原因造成如此低下的性能,但是目前够用,毕竟开了秒掉也不会没事狂按F4,不用秒掉退出秒掉程序就行。
———————————————————以上为转载—————————————————————
最终版本摒弃热键的实现思路,直接调用底层API监听键盘输入,稳定。代码公布在Gitee码云 代码未经整理直接将Visual Studio所有文件打包上传。由于时间较为久远,实现时基于应用,本文技术描述不一定准确。
总结:前三版都是通过百度搜索到的思路,找来找去都是这些。最终版本是独立思考+亲自查阅微软API+英文网站检索得到的结果。英文基础足够的情况下,编程遇到问题还是应该优先找找Stackoverflow等英文网站。
基于.net实现F4一键杀死指定进程(龙之谷秒掉器)相关推荐
- python获取进程编号(目的、获取当前进程编号、根据编号杀死指定进程号、获取当前父进程编号)
1. 获取进程编号的目的 获取进程编号的目的是验证主进程和子进程的关系,可以得知子进程是由那个主进程创建出来的. 获取进程编号的两种操作 获取当前进程编号 获取当前父进程编号 2. 获 ...
- Linux kill 杀死指定进程
Linux kill 杀死指定进程 一 杀死指定进程 现知道有一个php线程正在运行,需要杀死 root 26278 1 0 2015 ? 00:00:31 /usr/local/php/bin/p ...
- linux中杀死指定进程,Linux中通过 kill命令 杀死指定进程
一 杀死指定进程 现知道有一个curl线程正在运行,需要杀死 anggang@barry$ curl -y 30 -Y 1 -m 300 -x 8.8.8.8:808 -o html_baidu h ...
- vbs 杀死进程_VBS杀死指定进程
以下是一小段杀死指定进程名字的小vbs,希望对大家有帮助. Function KillProc(strProcName) On Error Resume Next Set objWMIService ...
- linux 杀死指定pid,Linuxkill杀死指定进程
一.杀死指定进程 现知道有一个curl线程正在运行,需要杀死 anggang@barry$ curl -y 30 -Y 1 -m 300 -x 8.8.8.8:808 -o html_baidu ht ...
- linux杀死指定名称的进程,Linux kill 杀死指定进程
一 杀死指定进程 现知道有一个php线程正在运行,需要杀死 root 26278 1 0 2015 ? 00:00:31 /usr/local/php/bin/php /var/www/html/r ...
- android 命令kill进程号,一定是我打开的姿势不对——Android下使用kill命令杀死指定进程...
环境:Android 5.1.1(已root) 最近有一个需求,需要在Android下杀死指定pid的进程.Android原生API提供了几个接口: (1)android.os.Process.kil ...
- linux杀死指定进程中的线程,linux查看进程和线程的命令
1.任务:获得进程信息 :ps命令,或者top命令,它能显示当前运行中进程的相关信息,包括进程的PID. ps命令能提供一份当前进程的快照.如果想状态可以自动刷新,可以使用top命令. 2.任务:获得 ...
- Linux通过端口号杀死指定进程
前言: 我们在服务器上升级项目的时候,需要将原来的项目停止,然后启动新的项目. 这时候我们只知道应用所占的端口号,如何将进程杀死呢? linux中杀进程时候,如果你是知道它所占用的端口号的话,可以通过 ...
- Windows编程—杀死指定路径程序文件的进程
前言 由于Windows命令 taskkill 无法通过程序文件的完整路径匹配来杀死指定进程,通过程序名称容易误杀进程,所有笔者做了一个简单的封装做了个mytaskkill.exe,用来杀死指定路径的 ...
最新文章
- android 多个应用,Android中一个应用实现多个图标的几种方式
- MPEG2-TS音视频同步原理
- 基于用户投票的排名算法(四):牛顿冷却定律
- plsql oracle服务端,PLSQL Developer + Oracle客户端简易安装方法
- xilinx IP核之ROM
- RecyclerView+CardView
- ubuntu 20上安装gdbgui
- Manjaro Linux执行某些命令缺少libtinfo.so.5问题
- eclipse导入项目pom文件报错_eclipse导入maven管理的项目时,pom.xml第一行报错。错误如图1。而且dubbo的xml也不识别。...
- python发QQ邮件
- matlab写的串口通信图像上位机,MATLAB的串口通信
- javascript 字符串和json的互转
- Android美化插件,KWGT桌面插件美化
- 20200608模拟赛 Endless
- 企业金融App评测系列——微众银行以App构筑企业金融服务新生态,成为企业的随身数字银行
- uni--ReferenceError plus is not defined
- tp6静态.htaccess
- Spring AOP 切面记录操作日志
- 史上最全第三代半导体产业发展介绍(附世界各国研究概况解析)
- 阿里云购买Symantec(赛门铁克)免费的SSL