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