Problem:
Using Sendmessage with LVM_GETITEMPOSITION causes page faults in Explorer.
Resolution:
Using memory-mapped files to do the cross process messaging needed.

Code:
Public Domain
The following code is a VB6 project, all the modules can be used in other 32 Bit versions of VB.
If using an earlier version, start a new project and paste the code into the Form1 form. And then add the .bas module.
Includes Source code to:
- Locate ALL the Desktop Icons
- Print directly to the Desktop
- Refresh the Desktop
- Swap Icon Positions
The code is fully commented.