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

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

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

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

    Function UnpinTaskbar()
      System::Call 'user32::FindWindowEx(i0, i0, t"Shell_TrayWnd", i0)i.s'
      System::Call 'user32::FindWindowEx(i$s, i0, t"ReBarWindow32", i0)i.s'
      System::Call 'user32::FindWindowEx(i$s, i0, t"MSTaskSwWClass", i0)i.s'
      System::Call 'user32::FindWindowEx(i$s, i0, t"MSTaskListWClass", i0)i.s'
      System::Call 'user32::FindWindowEx(i$s, i0, t"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 卸载前取消任务栏固定

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

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