NSIS 卸载前取消任务栏固定:详细步骤和示例代码
要在 NSIS 脚本中实现取消任务栏固定功能,可以使用以下步骤:
-
使用 NSIS 的插件 System.dll,该插件提供了一些系统操作的函数。
-
在 NSIS 脚本中添加对 System.dll 插件的引用:
!include "System.nsh" -
在 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 -
在 NSIS 脚本中的卸载过程中调用上述自定义函数:
Section ; 其他卸载操作 Call UnpinTaskbar SectionEnd
这样,在卸载过程中,NSIS 脚本将调用 UnpinTaskbar 函数,并通过 System.dll 插件的函数来取消任务栏固定。请注意,这种方法只适用于 Windows 操作系统。
原文地址: https://www.cveoy.top/t/topic/o6tN 著作权归作者所有。请勿转载和采集!