客户端插件KillProcDLL ,用于结束进程。

官网文档:https://nsis.sourceforge.io/KillProcDLL_plug-in

使用场景

卸载程序时,结束正在运行的应用程序

使用示例

KillProcDLL::KillProc "process_name.exe"

为什么要扩展?

使用默认提供的KillProc方法是强制结束进程,这可能导致意外的情况发生,例如数据丢失,程序崩溃等。为了防止上述的情况,我们需要向退出的应用发生指令,让其完成退出所需的正常逻辑动作等,再安全的退出进程。

扩展后的插件

增加了2个方法:

SendMessageByHwnd

通过窗口句柄向指定进程发送命令,不推荐使用应该方法,当窗口处于隐藏状态时,使用此方法发送时,应用程序接收不到消息。

使用示例

KillProcDLL::SendMessageByHwnd "process_name.exe" 1

SendMessageByMainThreadId

通过窗口句柄向指定进程的主线程发送命令,推荐使用此方法,不受窗口的状态影响。

使用示例

KillProcDLL::SendMessageByMainThreadId "process_name.exe" 1

接收方代码示例(以C#,WPF程序为例)

public MainWindow()
{
//主线程消息过滤器
ComponentDispatcher.ThreadFilterMessage += ComponentDispatcher_ThreadFilterMessage;
} /// <summary>
/// //主线程消息过滤器
/// </summary>
/// <param name="msg"></param>
/// <param name="handled"></param>
private void ComponentDispatcher_ThreadFilterMessage(ref MSG msg, ref bool handled)
{
if (msg.message == 1)
{
//接到消息,执行对应的逻辑
}
}

扩展后的插件源码地址:https://github.com/zhaobangyu/NSIS/tree/PluginCode/KillProcDLL-bin

NSIS KillProcDLL插件 扩展使用的更多相关文章

  1. NSIS皮肤插件

    原文 NSIS皮肤插件 [有一个更好的皮肤,大家不妨试一下.http://www.flighty.cn/html/bushu/20110413_118.html ] 对于一般的安装不推荐使用皮肤,因为 ...

  2. QML插件扩展2(基于C++的插件扩展)

    上一节介绍了纯QML的插件扩展方式,这种扩展方式基本满足大部分的扩展需求,下面开始介绍比较小众的基于C++的扩展 (一)更新插件工程 1.更新MyPlugin工程下的qmldir文件,加入plugin ...

  3. QML插件扩展(一)

    准备分两节来介绍QML扩展插件,分别为 (一)基于QML文件的扩展方式 (二)基于C++的插件扩展 这篇先介绍基于QML的插件扩展. 先介绍几个基本概念: qmldir: 用于组织自定义的QML插件, ...

  4. [Unity]Unity3D编辑器插件扩展和组件扩展

    1. 插件扩展 1.1. 命名空间 using UnityEditor; using UnityEngine; //非必需,常用到 1.2. 使用语法 [MenuItem("Assets/M ...

  5. 百度umeditor富文本编辑器插件扩展

    富文本编辑器在WEB开发中经常用到,个人比较喜欢用百度出的ueditor这款,ueditor这款本身支持插件扩展的,但是ueditor的mini版本 umeditor 就没有那么方便了,不过找了很多资 ...

  6. Chrome插件(扩展)开发全攻略

    [干货]Chrome插件(扩展)开发全攻略:https://www.cnblogs.com/liuxianan/p/chrome-plugin-develop.html

  7. FireFox 浏览器插件/扩展开发学习

    2014-11-08 内容存档在evernote,笔记名"FireFox 浏览器插件/扩展开发学习"

  8. jQuery的noConflict以及插件扩展

    一.noConflict函数 JavaScript有很多插件,如果jQuery对象的$与其他插件冲突,我们可以使用noConflict()方法去掉$或者使用其他的符号代替 注:noConflict() ...

  9. jQuery笔记之工具方法extend插件扩展

    jQuery工具方法 $.extend()插件扩展(工具方法) $.fn.extend()插件扩展(实例方法) 浅度克隆.深度克隆 两个方法基本是一样的,唯一不同的就是调用方式不一样 -------- ...

  10. Chrome插件(扩展)

    [干货]Chrome插件(扩展)开发全攻略   写在前面 我花了将近一个多月的时间断断续续写下这篇博文,并精心写下完整demo,写博客的辛苦大家懂的,所以转载务必保留出处.本文所有涉及到的大部分代码均 ...

随机推荐

  1. Django之SQL注入漏洞复现(CVE-2021-35042)

    前言 SQL注入的原理是对web请求,表单或域名等提交查询的字符串没有进行安全检测过滤,攻击者可以拼接执行恶意SQL命令,导致用户数据泄露 漏洞原理 Django 组件存在 SQL 注入漏洞,该漏洞是 ...

  2. 有意思,小程序还可以一键生成App!

    小程序≠微信小程序 说到小程序,大部分同学的第一反应,可能是微信小程序.支付宝小程序,确实,小程序的概念深入人心,并且已经被约定俗成的绑定到某些互联网公司的 APP 上. 但是,"小程序&q ...

  3. ArcGIS插件-太乐地图

    在很多行业,打败你的往往不是竞争对手,而是你意想不到的其他因素.回想十年前,如果能预料到现在的处境,也许当时的心态和做法会有所不同.在多年前,市场上出现包括水经注.太乐.BigeMap.91卫图等多种 ...

  4. Windows喝水记录工具v2.0

    Windows喝水记录工具v2.0 作者以前基本不喝水,后面体检出来身体出现了一些问题(肾结晶什么的),多喝水可以减轻甚至痊愈,由于没有喝水的习惯怕喝多或者喝少,所以做了这个桌面小工具,喝一杯记录一下 ...

  5. Flink1.15仅支持ZooKeeper3.5/3.6

    这是一个验证贴,因为社区文档是错误的. 先说结论 Flink1.15仅支持ZooKeeper3.5/3.6,不再支持3.4.FLINK-25146 Drop support for Zookeeper ...

  6. Spring boot 3.0 日志

    spring boot 3.0 已经自己集成了日志功能  logback SpringBoot 启动时自动加载配置文件,配置文件的默认名称为: logback.xml 或 logback-test.x ...

  7. concurrent.futures之ThreadPoolExecutor python线程池代码实现方法

    from concurrent.futures import ThreadPoolExecutor def main(i): print(i) THREAD_NUM = 20 # 线程数 with T ...

  8. SpringCloud Sleuth链路追踪

    1.概要 一般的,一个分布式服务跟踪系统,主要有三部分: 数据收集 数据存储 数据展示 然而这三个部分其实不都是由SpringCloud Sleuth(下面我简称为Sleuth)完成的,Sleuth负 ...

  9. 树莓派4B安装OPENCV4.0

    参考 : https://www.pyimagesearch.com/2018/09/26/install-opencv-4-on-your-raspberry-pi/ Step #1: Expand ...

  10. JZOJ 4270.【NOIP2015模拟10.27】魔道研究

    魔道研究 题面 思路 简单的想,就是在 \(T\) 个可重集合每个中选出 \(k\) 个最大的数组成新的可重集合,其中 \(k\) 为其编号 然后在新的集合中选前 \(n\) 大的数,求其和 考虑开 ...