It would be nice if people could drop me, or post, some screendumps of this code running on NT, 2K, XP64 and Windows 7:
Code: Select all
EnableExplicit
;
Global width.i = 600
Global height.i = 400
Global event.i
Global x_retval_string.s
Global x_retval.i
Procedure.s x_getspecialfolderlocation(type.i)
  Protected folderid.i
  ;
  ; *** retrieve a special folder name
  ;
  ; in:      type.i
  ; retval:  .s                - string containing the path
  ; out:     x_retval_string.s - as retval
  ;          x_retval.i        - 0 aka #TRUE if successful
  ;
  ; first retrieve a pointer to the itemidlist structure of a 'special folder'
  ; followed by retrieving the path from that imtemidlist structure
  ;
  x_retval = SHGetSpecialFolderLocation_(0,type,@folderid)
  If x_retval = 0
    x_retval_string = Space(#MAX_PATH)
    If SHGetPathFromIDList_(folderid,@x_retval_string) = 0
      x_retval = 1
    ElseIf Right(x_retval_string,1) <> "\"
      x_retval_string = x_retval_string+"\"
    EndIf
    ;
    ; free the itemidlist
    ;
    CoTaskMemFree_(folderid)
  EndIf
  If x_retval <> 0
    x_retval_string = ""
  EndIf
  ProcedureReturn x_retval_string
EndProcedure
OpenWindow(1,10,10,width,height,"Test",#PB_Window_ScreenCentered|#PB_Window_SystemMenu)
ListIconGadget(1,2,2,width-2,height-2,"Item",200,#PB_ListIcon_GridLines)
AddGadgetColumn(1,1,"Value",800)
;
; which OS
;
If OSVersion() < #PB_OS_Windows_NT3_51
  AddGadgetItem(1,-1,"OSVersion()"+#LF$+Str(OSVersion())+" unknown older version")
Else
  Select OSVersion()
  Case #PB_OS_Windows_NT3_51
    AddGadgetItem(1,-1,"OSVersion()"+#LF$+Str(OSVersion())+" Windows NT3")
  Case #PB_OS_Windows_95
    AddGadgetItem(1,-1,"OSVersion()"+#LF$+Str(OSVersion())+" Windows 95")
  Case #PB_OS_Windows_NT_4
    AddGadgetItem(1,-1,"OSVersion()"+#LF$+Str(OSVersion())+" Windows NT4")
  Case #PB_OS_Windows_98
    AddGadgetItem(1,-1,"OSVersion()"+#LF$+Str(OSVersion())+" Windows 98")
  Case #PB_OS_Windows_ME
    AddGadgetItem(1,-1,"OSVersion()"+#LF$+Str(OSVersion())+" Windows ME")
  Case #PB_OS_Windows_2000
    AddGadgetItem(1,-1,"OSVersion()"+#LF$+Str(OSVersion())+" Windows 2000")
  Case #PB_OS_Windows_XP
    AddGadgetItem(1,-1,"OSVersion()"+#LF$+Str(OSVersion())+" Windows XP")
  Case #PB_OS_Windows_Server_2003
    AddGadgetItem(1,-1,"OSVersion()"+#LF$+Str(OSVersion())+" Windows Server 2003")
  Case #PB_OS_Windows_Vista
    AddGadgetItem(1,-1,"OSVersion()"+#LF$+Str(OSVersion())+" Windows Vista")
  Case #PB_OS_Windows_Server_2008
    AddGadgetItem(1,-1,"OSVersion()"+#LF$+Str(OSVersion())+" Windoes Server 2008")
  Case #PB_OS_Windows_7
    AddGadgetItem(1,-1,"OSVersion()"+#LF$+Str(OSVersion())+" Windows 7")
  Case #PB_OS_Windows_Future
    AddGadgetItem(1,-1,"OSVersion()"+#LF$+Str(OSVersion())+" unknown version (too new)")
  Default
    AddGadgetItem(1,-1,"OSVersion()"+#LF$+Str(OSVersion())+" failed (should not happen)")
  EndSelect
EndIf
;
AddGadgetItem(1,-1,"")
AddGadgetItem(1,-1,"ProgramFilename()"+#LF$+ProgramFilename())
AddGadgetItem(1,-1,"GetCurrentDirectory()"+#LF$+GetCurrentDirectory())
AddGadgetItem(1,-1,"GetHomeDirectory()"+#LF$+GetHomeDirectory())
AddGadgetItem(1,-1,"GetTemporaryDirectory()"+#LF$+GetTemporaryDirectory())
;
AddGadgetItem(1,-1,"")
AddGadgetItem(1,-1,"SHGetSpecialFolderLocation_()")
AddGadgetItem(1,-1,"  #CSIDL_PERSONAL"+#LF$+x_getspecialfolderlocation(#CSIDL_PERSONAL))
AddGadgetItem(1,-1,"  #CSIDL_APPDATA"+#LF$+x_getspecialfolderlocation(#CSIDL_APPDATA))
AddGadgetItem(1,-1,"  #CSIDL_LOCAL_APPDATA"+#LF$+x_getspecialfolderlocation(#CSIDL_LOCAL_APPDATA))
AddGadgetItem(1,-1,"  #CSIDL_COMMON_APPDATA"+#LF$+x_getspecialfolderlocation(#CSIDL_COMMON_APPDATA))
; AddGadgetItem(1,-1,"  #CSIDL_WINDOWS"+#LF$+x_getspecialfolderlocation(#CSIDL_WINDOWS))
; AddGadgetItem(1,-1,"  #CSIDL_SYSTEM"+#LF$+x_getspecialfolderlocation(#CSIDL_SYSTEM))
; AddGadgetItem(1,-1,"  #CSIDL_PROGRAM_FILES_COMMON"+#LF$+x_getspecialfolderlocation(#CSIDL_PROGRAM_FILES_COMMON))
; AddGadgetItem(1,-1,"  #CSIDL_COMMON_DOCUMENTS"+#LF$+x_getspecialfolderlocation(#CSIDL_COMMON_DOCUMENTS))
; AddGadgetItem(1,-1,"  #SHGFP_TYPE_CURRENT"+#LF$+x_getspecialfolderlocation(#SHGFP_TYPE_CURRENT))
; AddGadgetItem(1,-1,"  #SHGFP_TYPE_DEFAULT"+#LF$+x_getspecialfolderlocation(#SHGFP_TYPE_DEFAULT))
;
AddGadgetItem(1,-1,"")
AddGadgetItem(1,-1,"GetEnvironmentVariable()")
AddGadgetItem(1,-1,"  USERPROFILE"+#LF$+GetEnvironmentVariable("USERPROFILE"))
AddGadgetItem(1,-1,"  APPDATA"+#LF$+GetEnvironmentVariable("APPDATA"))
AddGadgetItem(1,-1,"  HOMEPATH"+#LF$+GetEnvironmentVariable("HOMEPATH"))
AddGadgetItem(1,-1,"  TEMP"+#LF$+GetEnvironmentVariable("TEMP"))
AddGadgetItem(1,-1,"  TMP"+#LF$+GetEnvironmentVariable("TMP"))
; AddGadgetItem(1,-1,"  CLIENTNAME"+#LF$+GetEnvironmentVariable("CLIENTNAME"))
; AddGadgetItem(1,-1,"  SYSTEMDRIVE"+#LF$+GetEnvironmentVariable("SYSTEMDRIVE"))
; AddGadgetItem(1,-1,"  SYSTEMROOT"+#LF$+GetEnvironmentVariable("SYSTEMROOT"))
; AddGadgetItem(1,-1,"  ALLUSERSPROFILE"+#LF$+GetEnvironmentVariable("ALLUSERSPROFILE"))
; AddGadgetItem(1,-1,"  PATHEXT"+#LF$+GetEnvironmentVariable("PATHEXT"))
Repeat
  event = WaitWindowEvent()
Until event = #PB_Event_CloseWindow