要在 NSIS 脚本中实现取消任务栏固定功能,可以使用以下步骤:

  1. 使用 NSIS 的插件 System.dll,该插件提供了一些系统操作的函数。

  2. 在 NSIS 脚本中添加对 System.dll 插件的引用:

    !include "System.nsh"
    
  3. 在 NSIS 脚本中添加一个自定义函数,该函数用于取消任务栏固定:

    Function UnpinTaskbar()
      System::Call 'user32::FindWindowEx(i0, i0, 'Shell_TrayWnd', i0)i.s'
      System::Call 'user32::FindWindowEx(i$s, i0, 'ReBarWindow32', i0)i.s'
      System::Call 'user32::FindWindowEx(i$s, i0, 'MSTaskSwWClass', i0)i.s'
      System::Call 'user32::FindWindowEx(i$s, i0, 'MSTaskListWClass', i0)i.s'
      System::Call 'user32::FindWindowEx(i$s, i0, 'SysListView32', i0)i.s'
      System::Call 'user32::SendMessageA(is, i$LVM_GETHEADER, 0, 0)i.s'
      System::Call 'user32::GetWindowThreadProcessId(is, *i.r0)'
      System::Call 'kernel32::OpenProcess(i0x0400, i0, i0$r0)'
      System::Call 'user32::SendMessageA(is, i$HDM_GETITEMCOUNT, 0, 0)i.s'
      System::Call 'kernel32::CloseHandle(i$r0)'
      System::Call 'kernel32::OpenProcess(i0x0400, i0, i0$r0)'
      System::Call 'user32::SendMessageA(is, i$HDM_GETITEMCOUNT, 0, 0)i.s'
      System::Call 'kernel32::CloseHandle(i$r0)'
    FunctionEnd
    
  4. 在 NSIS 脚本中的卸载过程中调用上述自定义函数:

    Section
      ; 其他卸载操作
      Call UnpinTaskbar
    SectionEnd
    

这样,在卸载过程中,NSIS 脚本将调用 UnpinTaskbar 函数,并通过 System.dll 插件的函数来取消任务栏固定。请注意,这种方法只适用于 Windows 操作系统。

NSIS 卸载前取消任务栏固定:详细步骤和示例代码

原文地址: https://www.cveoy.top/t/topic/o6tN 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录