Posted a new version at the beginning of the thread. Quite a few changes.
LATEST VERSION CHANGES:
20-11-05
Changed to activating the PID so that the topmost window is activated (e.g. save dialog)
Compare windows to pid of explorer.exe and include window if same - for shortcut icon changing, etc
Icons for control panel applets (CPA) - credit to shimanov!
Changed default icon for window not found
Check if more than 1 pid in alt-tab list then use ahk_id instead of PID for activating
Limit gui size when too many windows to fit on screen, A_ScreenHeight*0.8
@ shimanov:
Implemented both your changes. Big thanks for the control panel icons - would have taken me days

Prefixed the "DIALOG" bit with a / and some spaces so they still stand out and the / for the first letter selection suggestion from
@ hps:
Keeping the Alt key pressed and pressing the first letter of the window name is implemented now. Without a tiny bit of modification it will only work for characters A-Z, 0-9 and / (since the alt key is held down, it actually sends modified ascii codes which had to be taken into account - e.g. captial letters).
I don't have a multimonitor setup myself so wouldn't really be able to test it out - and I wouldn't punish this forum with code I wrote and hadn't tested
I'm probably not doing the checks for which windows/dialogs to exclude/activate (by PID/ID) and the ownership of windows (seem to have got DllCall("GetParent"...) to work for dialog windows) in the best way but it should work for most stuff - so until I have a better idea or someone suggest a good way of finding out how windows are owned/topmost child, it'll have to do, which is sufficient right now I believe.
Also, any suggestions on how to reduce memory usage are welcome, as windows task manager says it's using just under 5 mb (I know it's not particularly reliable at reporting memory usage). I think I'm destroying the gui, listview and iconlist correctly.