Refresh Desktop: Difference between revisions

From NSIS Wiki
Jump to navigationJump to search
(acelrictro)
Line 1: Line 1:
{{PageAuthor|PeterSmith}}
ricrelorr
 
== Description ==
'''Requires:''' [[System plug-in]].
 
Refreshes the desktop window (USER32.DLL).  This is required in the Windows 'Vista'
operating system (as of the February 2005 'CTP' build).  This script works by
finding the correct desktop window and then posting a F5 virtual key down&up.
The key sequence must use PostMessage; sending keystrokes using SendMessage
doesn't work.
 
This script is presented as a standalone script; you can compile it into a
standalone program or embed it into your script.  Note that three user-defined
variables are used.
 
== The Script ==
<highlight-nsis>
Name RefreshDesktopWindow
OutFile RefreshDesktopWindow.exe
SilentInstall silent
var ProgmanHwnd
var ShellHwnd
var DesktopHwnd
 
 
Section ""
 
; 256=WM_KEYDOWN
; 257=WM_KEYUP
; 116=VK_F5
FindWindow $ProgmanHwnd "Progman" "Program Manager"
FindWindow $ShellHwnd "SHELLDLL_DefView" "" $ProgmanHwnd 0
FindWindow $DesktopHwnd "SysListView32" "" $ShellHwnd 0
System::Call "user32.dll::PostMessage(i $DesktopHwnd, i 256, i 116, i 0)"
System::Call "user32.dll::PostMessage(i $DesktopHwnd, i 257, i 116, i 0x80000000)"
 
SectionEnd
 
</highlight-nsis>
==== Here is something much simpler ====
This refreshes Windows which is just as fast and in essence the same thing as refreshing the desktop (refreshes all windows).
<highlight-nsis>System::Call 'Shell32::SHChangeNotify(i 0x8000000, i 0, i 0, i 0)'</highlight-nsis>
[[Category:System Plugin Examples]]

Revision as of 13:39, 8 December 2008

ricrelorr