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