For some reason, I need to detect whether Windows XP Start Menu is "Classic Start Menu" or XP Style "Start Menu". See below for a code snippet that you might be able to use in one of your projects.


Option Explicit
Private Declare Sub SHGetSetSettings Lib "shell32" _
(ByRef lpSS As Byte, ByVal dwMask As Long, ByVal bSet As Long)

Public Function IsXpMenuStyleOn() As Long
'SHELLSTATE is 36 byte structure
IsXpMenuStyleOn = 0

Dim Buf(0 To 35) As Byte

SHGetSetSettings Buf(0), SSF_STARTPANELON, 0
If Buf(28) = 2 Then
IsXpMenuStyleOn = 1
IsXpMenuStyleOn = 0
End If
End Function

You can also visit my blogpost, as a reference.