|
|
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]]
| |