NSIS KillProcDLL插件 擴展使用
客戶端插件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

浙公網安備 33010602011771號