Home > Archive > Clarion > September 2004 > How to get Windows system directory?
You are viewing an archived Text-only version of the thread.
To view this thread in it's original format and/or if you want to reply to
this thread please [click here]
| Author |
How to get Windows system directory?
|
|
| Siniša 2004-09-02, 3:55 pm |
| I would appreciate any help about this problem (problem for me :))
| |
| Ivo Ivanov 2004-09-02, 3:55 pm |
| MODULE('win32')
GetWindowsDirectory(*CSTRING lpBuffer, ULONG
SIZE),ULONG,RAW,PASCAL,NAME('GetWindowsD
irectoryA')
END
And in your code you do
LOC:WinDir CSTRING(256)
GetWindowsDir(LOC:WinDir, 255)
et voila
Ivo
"Siniša" <pc_uslugeNOSPAM@mail.inet.hr> schreef in bericht
news:ch750g$pk6$1@sunce.iskon.hr...
> I would appreciate any help about this problem (problem for me :))
>
>
| |
| Ivo Ivanov 2004-09-02, 3:55 pm |
| PS
The module must be included in the global MAP.
Ivo
"Ivo Ivanov" <iivanov@modest.nl> schreef in bericht
news:413733ff$0$20576$6c56d894@diablo.nl.easynet.net...
> MODULE('win32')
> GetWindowsDirectory(*CSTRING lpBuffer, ULONG
> SIZE),ULONG,RAW,PASCAL,NAME('GetWindowsD
irectoryA')
> END
>
> And in your code you do
>
> LOC:WinDir CSTRING(256)
>
> GetWindowsDir(LOC:WinDir, 255)
>
> et voila
> Ivo
>
> "Siniša" <pc_uslugeNOSPAM@mail.inet.hr> schreef in bericht
> news:ch750g$pk6$1@sunce.iskon.hr...
>
>
| |
| Siniša 2004-09-02, 3:55 pm |
| Very simple, but very effective. Thank you... Until next
problem, Siniša
| |
| Siniša 2004-09-02, 3:55 pm |
| OK, here we go again around system directory. Second question about this is
how to (on some event) create tps files into previously determineted system
directory. For example, I want to create some tps files when first time
start some procedure and to store that files into windows system directory?
I know that must be so simply, but for beginner like me it is not
Regard, Siniša.
| |
| Ivo Ivanov 2004-09-03, 8:55 am |
| 1. I guess, just as good practice, you should put each question in its own
thread.
2. You can very easily check the WIN API calls at www.msdn.com or even look
in the source files of Clarion, e.g. CWUTIL.INC
Here the stupid thing is that the guys at SV did not make the effort to put
all API calls into INC file, just selection which they thought we need and
nothing else.
The system directory's API call is the same as with the windows, only the
name is GetSystemDirectory. According to Microsoft and MSDN applications
should not create files into the system directory, only in windows.
3. You can specify in the dictionary that a name of a file is not a litteral
constant but it is kept in a variable by prefixing the litteral with
exclamation mark "!". Thus before opening the file you put the name in the
variable and ta da, the name is dynamic ;o)
success,
Ivo
"Siniša" <pc_uslugeNOSPAM@mail.inet.hr> schreef in bericht
news:ch7ndk$6mn$1@sunce.iskon.hr...
> OK, here we go again around system directory. Second question about this
is
> how to (on some event) create tps files into previously determineted
system
> directory. For example, I want to create some tps files when first time
> start some procedure and to store that files into windows system
directory?
> I know that must be so simply, but for beginner like me it is not
> Regard, Siniša.
>
>
| |
| Siniša 2004-09-03, 8:55 am |
| > 3. You can specify in the dictionary that a name of a file is not a
litteral
> constant but it is kept in a variable by prefixing the litteral with
> exclamation mark "!". Thus before opening the file you put the name in the
> variable and ta da, the name is dynamic ;o)
>
> success,
> Ivo
OK, this part is partialy succesfull, but... What I've got is tps file with
name WINDOWS.TPS stored in root directory. My effort is to create and store
tps file named PARAMETER.TPS into c:\windows\ directory on first startup of
application.
Regards, Siniša.
| |
| Ivo Ivanov 2004-09-03, 3:55 pm |
| Can u post a snippet?
Ivo
"Siniša" <pc_uslugeNOSPAM@mail.inet.hr> schreef in bericht
news:ch9mjf$hp2$1@sunce.iskon.hr...
> litteral
the[color=darkred]
> OK, this part is partialy succesfull, but... What I've got is tps file
with
> name WINDOWS.TPS stored in root directory. My effort is to create and
store
> tps file named PARAMETER.TPS into c:\windows\ directory on first startup
of
> application.
> Regards, Siniša.
>
>
| |
| Siniša 2004-09-08, 8:55 pm |
| > 3. You can specify in the dictionary that a name of a file is not a
litteral
> constant but it is kept in a variable by prefixing the litteral with
> exclamation mark "!". Thus before opening the file you put the name in the
> variable and ta da, the name is dynamic ;o)
>
> success,
> Ivo
OK, this part is partialy succesfull, but... What I've got is tps file with
name WINDOWS.TPS stored in root directory. My effort is to create and store
tps file named PARAMETER.TPS into c:\windows\ directory on first startup of
application.
Regards, Siniša.
| |
| Ivo Ivanov 2004-09-09, 3:55 pm |
| 1. I guess, just as good practice, you should put each question in its own
thread.
2. You can very easily check the WIN API calls at www.msdn.com or even look
in the source files of Clarion, e.g. CWUTIL.INC
Here the stupid thing is that the guys at SV did not make the effort to put
all API calls into INC file, just selection which they thought we need and
nothing else.
The system directory's API call is the same as with the windows, only the
name is GetSystemDirectory. According to Microsoft and MSDN applications
should not create files into the system directory, only in windows.
3. You can specify in the dictionary that a name of a file is not a litteral
constant but it is kept in a variable by prefixing the litteral with
exclamation mark "!". Thus before opening the file you put the name in the
variable and ta da, the name is dynamic ;o)
success,
Ivo
"Siniša" <pc_uslugeNOSPAM@mail.inet.hr> schreef in bericht
news:ch7ndk$6mn$1@sunce.iskon.hr...
> OK, here we go again around system directory. Second question about this
is
> how to (on some event) create tps files into previously determineted
system
> directory. For example, I want to create some tps files when first time
> start some procedure and to store that files into windows system
directory?
> I know that must be so simply, but for beginner like me it is not
> Regard, Siniša.
>
>
| |
| google 2004-09-20, 3:55 am |
| greetz,
Menno de Ruiter
R# = SHGetSpecialFolderLocation(0{prop:Handle
},05h,ADDRESS(ppidl))
R# = SHGetPathFromIDList(ppidl,Address(TheFil
e))
thus you use instead of 05h,-> 24h
#ifndef CSIDL_PERSONAL
#define CSIDL_PERSONAL 0x0005 // My Documents
#endif
#ifndef CSIDL_MYMUSIC
#define CSIDL_MYMUSIC 0x000d // "My Music"
folder
#endif
#ifndef CSIDL_APPDATA
#define CSIDL_APPDATA 0x001A // Application
Data, new for NT4
#endif
#ifndef CSIDL_LOCAL_APPDATA
#define CSIDL_LOCAL_APPDATA 0x001C // non roaming,
user\Local Settings\Application Data
#define CSIDL_INTERNET_CACHE 0x0020
#define CSIDL_COOKIES 0x0021
#define CSIDL_HISTORY 0x0022
#define CSIDL_COMMON_APPDATA 0x0023 // All
Users\Application Data
#define CSIDL_WINDOWS 0x0024 //
GetWindowsDirectory()
#define CSIDL_SYSTEM 0x0025 //
GetSystemDirectory()
#define CSIDL_PROGRAM_FILES 0x0026 // C:\Program
Files
#define CSIDL_MYPICTURES 0x0027 // My Pictures,
new for Win2K
#define CSIDL_PROGRAM_FILES_COMMON 0x002b // C:\Program
Files\Common
#define CSIDL_COMMON_DOCUMENTS 0x002e // All
Users\Documents
#define CSIDL_RESOURCES 0x0038 //
%windir%\Resources\, For theme and other windows resources.
#define CSIDL_RESOURCES_LOCALIZED 0x0039 //
%windir%\Resources\<LangID>, for theme and other windows specific
resources.
#define CSIDL_FLAG_CREATE 0x8000 // new for Win2K,
or this in to force creation of folder
#define CSIDL_COMMON_ADMINTOOLS 0x002f // All Users\Start
Menu\Programs\Administrative Tools
#define CSIDL_ADMINTOOLS 0x0030 // <user
name>\Start Menu\Programs\Administrative Tools
#endif // CSIDL_LOCAL_APPDATA
"Ivo Ivanov" <iivanov@modest.nl> wrote in message news:<413733ff$0$20576$6c56d894@diablo.nl.easynet.net>...[color=darkred]
> MODULE('win32')
> GetWindowsDirectory(*CSTRING lpBuffer, ULONG
> SIZE),ULONG,RAW,PASCAL,NAME('GetWindowsD
irectoryA')
> END
>
> And in your code you do
>
> LOC:WinDir CSTRING(256)
>
> GetWindowsDir(LOC:WinDir, 255)
>
> et voila
> Ivo
>
> "Siniša" <pc_uslugeNOSPAM@mail.inet.hr> schreef in bericht
> news:ch750g$pk6$1@sunce.iskon.hr...
| |
| google 2004-09-20, 3:55 am |
| this is for getting an explorer-alike startup
my routine gets you what is the REAL directory of the current user's
My Documents, My Pictures etc..
first you use the root (desktop) by:
R# = SHGetSpecialFolderLocation(0{prop:Handle
},0,ADDRESS(ppidl))
R# = SHGetPathFromIDList(ppidl,Address(TheFil
e))
(mind the zero, which is zero when you need the desktop), then you
convert the virtual path into the real by SHGetPathFromIDList
also on API what drives are available, and of what type..
you take the inidividual bits from calling the:
DrivesMask = GetLogicalDrives()
greetz,
Menno de Ruiter
-----------------------
GetAllLocalDrives Routine
Data
InputString CString(512)
szDisplayName CString(250)
mkid ULong
pchEaten ULong
ppidl ULong
pszPath CString(260)
pszCurrentDir CString(260)
ThisFlags ULong
TheFile CString(260)
FILE_TYPE_UNKNOWN Equate(0000h)
FILE_TYPE_DISK Equate(0001h)
FILE_TYPE_CHAR Equate(0002h)
FILE_TYPE_PIPE Equate(0003h)
FILE_TYPE_REMOTE Equate(8000h)
FILE_ATTRIBUTE_DATA Group,Pre()
dwFileAttributesA ULong
ftCreationTimeA ULong
ftCreationTimeB ULong
ftLastAccessTimeA ULong
ftLastAccessTimeB ULong
ftLastWriteTimeA ULong
ftLastWriteTimeB ULong
nFileSizeHigh ULong
nFileSizeLow ULong
End
FILE_ATTRIBUTE_READONLY Equate(00000001h)
FILE_ATTRIBUTE_HIDDEN Equate(00000002h)
FILE_ATTRIBUTE_SYSTEM Equate(00000004h)
FILE_ATTRIBUTE_DIRECTORY Equate(00000010h)
FILE_ATTRIBUTE_ARCHIVE Equate(00000020h)
FILE_ATTRIBUTE_NORMAL Equate(00000080h)
FILE_ATTRIBUTE_TEMPORARY Equate(00000100h)
lpFileName CString(2048)
!ff_:NORMAL EQUATE(0)
!ff_:READONLY EQUATE(1)
!ff_:HIDDEN EQUATE(2)
!ff_:SYSTEM EQUATE(4)
!ff_:DIRECTORY EQUATE(10H)
!ff_:ARCHIVE EQUATE(20H)
!ff_:LFN EQUATE(80H)
Code
Clear(QFolders)
Free(QFolders)
Clear(QFol2Fol)
Free(QFol2Fol)
Clear(QItems)
Free(QItems)
QFoldersNumberMax = 0
! Locate DESKTOP
R# = SHGetSpecialFolderLocation(0{prop:Handle
},0,ADDRESS(ppidl))
R# = SHGetSpecialFolderLocation(0{prop:Handle
},0,ADDRESS(ppidl))
R# = SHGetPathFromIDList(ppidl,Address(TheFil
e))
TheFile = LongPath(TheFile)
QFoldersNumberMax = QFoldersNumberMax + 1
QFolders:Number = QFoldersNumberMax
CurrentParentQFolders = QFolders:Number
QFolders:Path = Clip(TheFile)
QFolders:Name = 'Desktop'
QFolders:Line = 'Desktop'
QFolders:IcoCon = 467
QFolders:IcoExp = 467
QFolders:Level = 1
QFolders:LevelAgain = QFolders:Level
QFolders:IsExp = True
QFolders:Parent = 0
QFolders:Collections = 0
QFolders:Items = 0
QFolders:IsFolder = False
Add(QFolders)
!TheFile = QFolders:Path
Clear(QFiles)
Free(QFiles)
Directory(QFiles,Clip(TheFile)&'\*.*',02h+04h+010h+020h)
Sort(QFiles,+QFiles:Name)
LastPath = Clip(TheFile)
CurrentCollections = 0
CurrentItems = 0
G# = 0
Loop Records(QFiles) Times
G# = G# + 1
Get(QFiles,G#)
If QFiles:ShortName[1] = '.' then Cycle.
If QFiles:ShortName[1:2] = '..' then Cycle.
If Band(QFiles:Attrib,010h) <> 0
CurrentCollections = CurrentCollections + 1
Else
CurrentItems = CurrentItems + 1
QItemsNumberMax = QItemsNumberMax + 1
QItems:Number = QItemsNumberMax
QItems:QFolderNumber = QFolders:Number
QItems:Path = Clip(TheFile)
QItems:Name = CLip(QFiles:Name)
P# =
Instring('.',QItems:Name,-1,Len(Clip(QItems:Name)))
If P# > 0
QItems:Extension = QItems:Name[P#+1 :
Len(Clip(QItems:Name))]
Else
QItems:Extension = ''
End
lpFileName = Clip(TheFile) & '' & Clip(QFiles:Name)
QItems:Size = QFiles:Size
QItems:Year = Year(QFiles:Date)
QItems:Month = Month(QFiles:Date)
QItems:Day = Day(QFiles:Date)
QItems:Date = QFiles:Date
QItems:Time = QFiles:Time
QItems:Hour = ((QFiles:Time/100) / 60) /60
QItems:Minutes = ((QFiles:Time/100) -
(QItems:Hour*3600)) /60
QItems:Seconds = QFiles:Time/100
QItems:DaySeconds = QFiles:Time/100
QItems:Attrib = QFiles:Attrib
QItems:AttribString = QFiles:Attrib
If Band(QFiles:Attrib,1h) > 0
QItems:ReadOnly = 1
Else
QItems:ReadOnly = 0
End
If Band(QFiles:Attrib,2h) > 0
QItems:Hidden = 1
Else
QItems:Hidden = 0
End
If Band(QFiles:Attrib,4h) > 0
QItems:System = 1
Else
QItems:System = 0
End
If Band(QFiles:Attrib,20h) > 0
QItems:Archive = 1
Else
QItems:Archive = 0
End
Add(QItems)
End
End
QFolders:Collections = CurrentCollections
QFolders:Items = CurrentItems
Put(QFolders)
! end
! Locate MY DOCUMENTS
CurrentCollections = 0
CurrentItems = 0
R# = SHGetSpecialFolderLocation(0{prop:Handle
},05h,ADDRESS(ppidl))
R# = SHGetPathFromIDList(ppidl,Address(TheFil
e))
TheFile = LongPath(TheFile)
QFoldersNumberMax = QFoldersNumberMax + 1
QFolders:Number = QFoldersNumberMax
CurrentParentQFolders = QFolders:Number
QFolders:Path = Clip(TheFile)
QFolders:Name = 'My Documents'
QFolders:Line = 'My Documents'
QFolders:IcoCon = 468
QFolders:IcoExp = 468
QFolders:Level = 2
CurrentQFoldersLevel = QFolders:Level
QFolders:IsExp = True
QFolders:IsFolder = True
QFolders:Parent = 1 !CurrentParentQFolders
QFolders:LevelAgain = QFolders:Level
Clear(QFiles)
Free(QFiles)
Directory(QFiles,Clip(TheFile)&'\*.*',02h+04h+010h+020h)
Sort(QFiles,+QFiles:Name)
LastPath = Clip(TheFile)
CurrentCollections = 0
CurrentItems = 0
G# = 0
Loop Records(QFiles) Times
G# = G# + 1
Get(QFiles,G#)
If QFiles:ShortName[1] = '.' then Cycle.
If QFiles:ShortName[1:2] = '..' then Cycle.
If Band(QFiles:Attrib,010h) <> 0
CurrentCollections = CurrentCollections + 1
Else
CurrentItems = CurrentItems + 1
QItemsNumberMax = QItemsNumberMax + 1
QItems:Number = QItemsNumberMax
QItems:QFolderNumber = QFolders:Number
QItems:Path = Clip(TheFile)
QItems:Name = CLip(QFiles:Name)
P# =
Instring('.',QItems:Name,-1,Len(Clip(QItems:Name)))
If P# > 0
QItems:Extension = QItems:Name[P#+1 :
Len(Clip(QItems:Name))]
Else
QItems:Extension = ''
End
lpFileName = Clip(TheFile) & '' & Clip(QFiles:Name)
QItems:Size = QFiles:Size
QItems:Year = Year(QFiles:Date)
QItems:Month = Month(QFiles:Date)
QItems:Day = Day(QFiles:Date)
QItems:Date = QFiles:Date
QItems:Time = QFiles:Time
QItems:Hour = ((QFiles:Time/100) / 60) /60
QItems:Minutes = ((QFiles:Time/100) -
(QItems:Hour*3600)) /60
QItems:Seconds = QFiles:Time/100
QItems:DaySeconds = QFiles:Time/100
QItems:Attrib = QFiles:Attrib
QItems:AttribString = QFiles:Attrib
If Band(QFiles:Attrib,1h) > 0
QItems:ReadOnly = 1
Else
QItems:ReadOnly = 0
End
If Band(QFiles:Attrib,2h) > 0
QItems:Hidden = 1
Else
QItems:Hidden = 0
End
If Band(QFiles:Attrib,4h) > 0
QItems:System = 1
Else
QItems:System = 0
End
If Band(QFiles:Attrib,20h) > 0
QItems:Archive = 1
Else
QItems:Archive = 0
End
Add(QItems)
End
End
QFolders:Collections = CurrentCollections
QFolders:Items = CurrentItems
Add(QFolders)
! end
MyDocumentsQFoldersNumber# = QFolders:Number
! Under My documents
If CurrentCollections > 0
GetSubQFiles# = 0
CurrentQFoldersLevel = CurrentQFoldersLevel + 1
Loop Records(QFiles) Times
GetSubQFiles# = GetSubQFiles# + 1
Get(QFiles,GetSubQFiles#)
If Errorcode() <> 0 then Break.
If QFiles:ShortName[1] = '.' then Cycle.
If QFiles:ShortName[1:2] = '..' then Cycle.
If Band(QFiles:Attrib,010h) <> 0
QFoldersNumberMax =
QFoldersNumberMax + 1
QFolders:Number =
QFoldersNumberMax
QFolders:Path = Clip(TheFile)
&''& Clip(QFiles:Name)
QFolders:Name =
Clip(QFiles:Name)
QFolders:Line =
Clip(QFiles:Name)
QFolders:IcoCon = 477
QFolders:IcoExp = 477
QFolders:Level =
CurrentQFoldersLevel
QFolders:IsExp = False
QFolders:Parent =
CurrentParentQFolders
QFolders:Collections = 0
QFolders:Items = 0
QFolders:IsFolder = True
QFolders:LevelAgain = QFolders:Level
Add(QFolders)
CurrentParentQFoldersL3# = QFolders:Number
Clear(Q2Files)
Free(Q2Files)
Directory(Q2Files,Clip(TheFile)&''&
Clip(QFiles:Name)&'\*.*',02h+04h+010h+020h)
Sort(Q2Files,+Q2Files:Name)
LastPath = Clip(TheFile)&''& Clip(QFiles:Name)
CurrentCollections = 0
CurrentItems = 0
G2# = 0
Loop Records(Q2Files) Times
G2# = G2# + 1
Get(Q2Files,G2#)
If Q2Files:ShortName[1] = '.' then
Cycle.
If Q2Files:ShortName[1:2] = '..' then
Cycle.
If Band(Q2Files:Attrib,010h) <> 0
CurrentCollections = CurrentCollections +
1
Else
CurrentItems = CurrentItems + 1
End
End
QFolders:Collections = CurrentCollections
QFolders:Items = CurrentItems
Put(QFolders)
CurrentQFoldersLevel = CurrentQFoldersLevel + 1
CurrentCollections = 0
CurrentItems = 0
G2# = 0
Loop Records(Q2Files) Times
G2# = G2# + 1
Get(Q2Files,G2#)
If Q2Files:ShortName[1] = '.' then
Cycle.
If Q2Files:ShortName[1:2] = '..' then
Cycle.
If Band(Q2Files:Attrib,010h) <> 0
QFoldersNumberMax =
QFoldersNumberMax + 1
QFolders:Number =
QFoldersNumberMax
QFolders:Path =
Clip(LastPath)&''&Clip(Q2Files:Name)
QFolders:Name =
Clip(Q2Files:Name)
QFolders:Line =
Clip(Q2Files:Name)
QFolders:IcoCon = 477
QFolders:IcoExp = 477
QFolders:Level =
CurrentQFoldersLevel
QFolders:IsExp = False
QFolders:Parent =
CurrentParentQFoldersL3#
QFolders:Collections = 0
QFolders:Items = 0
QFolders:IsFolder = True
QFolders:LevelAgain =
QFolders:Level
Add(QFolders)
Clear(Q3Files)
Free(Q3Files)
Directory(Q3Files,Clip(QFolders:Path)&'\*.*',02h+04h+010h+020h)
Sort(Q3Files,+Q3Files:Name)
CurrentCollections = 0
CurrentItems = 0
G3# = 0
Loop Records(Q3Files) Times
G3# = G3# + 1
Get(Q3Files,G3#)
If Q3Files:ShortName[1] = '.'
then Cycle.
If Q3Files:ShortName[1:2] = '..'
then Cycle.
If Band(Q3Files:Attrib,010h) <> 0
CurrentCollections =
CurrentCollections + 1
Else
CurrentItems = CurrentItems + 1
End
End
QFolders:Collections =
CurrentCollections
QFolders:Items = CurrentItems
Put(QFolders)
End
End
CurrentQFoldersLevel = CurrentQFoldersLevel - 1
Else
QItemsNumberMax = QItemsNumberMax + 1
QItems:Number = QItemsNumberMax
QItems:QFolderNumber = MyDocumentsQFoldersNumber#
QItems:Path = Clip(TheFile)
QItems:Name = CLip(QFiles:Name)
P# =
Instring('.',QItems:Name,-1,Len(Clip(QItems:Name)))
If P# > 0
QItems:Extension = QItems:Name[P#+1 :
Len(Clip(QItems:Name))]
Else
QItems:Extension = ''
End
lpFileName = Clip(TheFile) & '' &
Clip(QFiles:Name)
QItems:Size = QFiles:Size
QItems:Year = Year(QFiles:Date)
QItems:Month = Month(QFiles:Date)
QItems:Day = Day(QFiles:Date)
QItems:Date = QFiles:Date
QItems:Time = QFiles:Time
QItems:Hour = ((QFiles:Time/100) / 60)
/60
QItems:Minutes = ((QFiles:Time/100) -
(QItems:Hour*3600)) /60
QItems:Seconds = QFiles:Time/100
QItems:DaySeconds = QFiles:Time/100
QItems:Attrib = QFiles:Attrib
QItems:AttribString = QFiles:Attrib
If Band(QFiles:Attrib,1h) > 0
QItems:ReadOnly = 1
Else
QItems:ReadOnly = 0
End
If Band(QFiles:Attrib,2h) > 0
QItems:Hidden = 1
Else
QItems:Hidden = 0
End
If Band(QFiles:Attrib,4h) > 0
QItems:System = 1
Else
QItems:System = 0
End
If Band(QFiles:Attrib,20h) > 0
QItems:Archive = 1
Else
QItems:Archive = 0
End
Add(QItems)
End
End
CurrentQFoldersLevel = CurrentQFoldersLevel - 1
End
!!!!!!!!1
DrivesMask = GetLogicalDrives()
Clear(QLocalDrives)
Free(QLocalDrives)
Char# = Val('A')
Char# = Char# - 1
Char# = Char# + 1 ; If
BAND(00000000000000000000000000000001b,D
rivesMask) > 0 then
QLocalDrives:Number = QLocalDrives:Number + 1 ; QLocalDrives:Letter =
Chr(Char#) ; Add(QLocalDrives) ; End
Char# = Char# + 1 ; If
BAND(00000000000000000000000000000010b,D
rivesMask) > 0 then
QLocalDrives:Number = QLocalDrives:Number + 1 ; QLocalDrives:Letter =
Chr(Char#) ; Add(QLocalDrives) ; End
Char# = Char# + 1 ; If
BAND(00000000000000000000000000000100b,D
rivesMask) > 0 then
QLocalDrives:Number = QLocalDrives:Number + 1 ; QLocalDrives:Letter =
Chr(Char#) ; Add(QLocalDrives) ; End
Char# = Char# + 1 ; If
BAND(00000000000000000000000000001000b,D
rivesMask) > 0 then
QLocalDrives:Number = QLocalDrives:Number + 1 ; QLocalDrives:Letter =
Chr(Char#) ; Add(QLocalDrives) ; End
Char# = Char# + 1 ; If
BAND(00000000000000000000000000010000b,D
rivesMask) > 0 then
QLocalDrives:Number = QLocalDrives:Number + 1 ; QLocalDrives:Letter =
Chr(Char#) ; Add(QLocalDrives) ; End
Char# = Char# + 1 ; If
BAND(00000000000000000000000000100000b,D
rivesMask) > 0 then
QLocalDrives:Number = QLocalDrives:Number + 1 ; QLocalDrives:Letter =
Chr(Char#) ; Add(QLocalDrives) ; End
Char# = Char# + 1 ; If
BAND(00000000000000000000000001000000b,D
rivesMask) > 0 then
QLocalDrives:Number = QLocalDrives:Number + 1 ; QLocalDrives:Letter =
Chr(Char#) ; Add(QLocalDrives) ; End
Char# = Char# + 1 ; If
BAND(00000000000000000000000010000000b,D
rivesMask) > 0 then
QLocalDrives:Number = QLocalDrives:Number + 1 ; QLocalDrives:Letter =
Chr(Char#) ; Add(QLocalDrives) ; End
Char# = Char# + 1 ; If
BAND(00000000000000000000000100000000b,D
rivesMask) > 0 then
QLocalDrives:Number = QLocalDrives:Number + 1 ; QLocalDrives:Letter =
Chr(Char#) ; Add(QLocalDrives) ; End
Char# = Char# + 1 ; If
BAND(00000000000000000000001000000000b,D
rivesMask) > 0 then
QLocalDrives:Number = QLocalDrives:Number + 1 ; QLocalDrives:Letter =
Chr(Char#) ; Add(QLocalDrives) ; End
Char# = Char# + 1 ; If
BAND(00000000000000000000010000000000b,D
rivesMask) > 0 then
QLocalDrives:Number = QLocalDrives:Number + 1 ; QLocalDrives:Letter =
Chr(Char#) ; Add(QLocalDrives) ; End
Char# = Char# + 1 ; If
BAND(00000000000000000000100000000000b,D
rivesMask) > 0 then
QLocalDrives:Number = QLocalDrives:Number + 1 ; QLocalDrives:Letter =
Chr(Char#) ; Add(QLocalDrives) ; End
Char# = Char# + 1 ; If
BAND(00000000000000000001000000000000b,D
rivesMask) > 0 then
QLocalDrives:Number = QLocalDrives:Number + 1 ; QLocalDrives:Letter =
Chr(Char#) ; Add(QLocalDrives) ; End
Char# = Char# + 1 ; If
BAND(00000000000000000010000000000000b,D
rivesMask) > 0 then
QLocalDrives:Number = QLocalDrives:Number + 1 ; QLocalDrives:Letter =
Chr(Char#) ; Add(QLocalDrives) ; End
Char# = Char# + 1 ; If
BAND(00000000000000000100000000000000b,D
rivesMask) > 0 then
QLocalDrives:Number = QLocalDrives:Number + 1 ; QLocalDrives:Letter =
Chr(Char#) ; Add(QLocalDrives) ; End
Char# = Char# + 1 ; If
BAND(00000000000000001000000000000000b,D
rivesMask) > 0 then
QLocalDrives:Number = QLocalDrives:Number + 1 ; QLocalDrives:Letter =
Chr(Char#) ; Add(QLocalDrives) ; End
Char# = Char# + 1 ; If
BAND(00000000000000010000000000000000b,D
rivesMask) > 0 then
QLocalDrives:Number = QLocalDrives:Number + 1 ; QLocalDrives:Letter =
Chr(Char#) ; Add(QLocalDrives) ; End
Char# = Char# + 1 ; If
BAND(00000000000000100000000000000000b,D
rivesMask) > 0 then
QLocalDrives:Number = QLocalDrives:Number + 1 ; QLocalDrives:Letter =
Chr(Char#) ; Add(QLocalDrives) ; End
Char# = Char# + 1 ; If
BAND(00000000000001000000000000000000b,D
rivesMask) > 0 then
QLocalDrives:Number = QLocalDrives:Number + 1 ; QLocalDrives:Letter =
Chr(Char#) ; Add(QLocalDrives) ; End
Char# = Char# + 1 ; If
BAND(00000000000010000000000000000000b,D
rivesMask) > 0 then
QLocalDrives:Number = QLocalDrives:Number + 1 ; QLocalDrives:Letter =
Chr(Char#) ; Add(QLocalDrives) ; End
Char# = Char# + 1 ; If
BAND(00000000000100000000000000000000b,D
rivesMask) > 0 then
QLocalDrives:Number = QLocalDrives:Number + 1 ; QLocalDrives:Letter =
Chr(Char#) ; Add(QLocalDrives) ; End
Char# = Char# + 1 ; If
BAND(00000000001000000000000000000000b,D
rivesMask) > 0 then
QLocalDrives:Number = QLocalDrives:Number + 1 ; QLocalDrives:Letter =
Chr(Char#) ; Add(QLocalDrives) ; End
Char# = Char# + 1 ; If
BAND(00000000010000000000000000000000b,D
rivesMask) > 0 then
QLocalDrives:Number = QLocalDrives:Number + 1 ; QLocalDrives:Letter =
Chr(Char#) ; Add(QLocalDrives) ; End
Char# = Char# + 1 ; If
BAND(00000000100000000000000000000000b,D
rivesMask) > 0 then
QLocalDrives:Number = QLocalDrives:Number + 1 ; QLocalDrives:Letter =
Chr(Char#) ; Add(QLocalDrives) ; End
Char# = Char# + 1 ; If
BAND(00000001000000000000000000000000b,D
rivesMask) > 0 then
QLocalDrives:Number = QLocalDrives:Number + 1 ; QLocalDrives:Letter =
Chr(Char#) ; Add(QLocalDrives) ; End
Char# = Char# + 1 ; If
BAND(00000010000000000000000000000000b,D
rivesMask) > 0 then
QLocalDrives:Number = QLocalDrives:Number + 1 ; QLocalDrives:Letter =
Chr(Char#) ; Add(QLocalDrives) ; End
Char# = Char# + 1 ; If
BAND(00000100000000000000000000000000b,D
rivesMask) > 0 then
QLocalDrives:Number = QLocalDrives:Number + 1 ; QLocalDrives:Letter =
Chr(Char#) ; Add(QLocalDrives) ; End
Char# = Char# + 1 ; If
BAND(00001000000000000000000000000000b,D
rivesMask) > 0 then
QLocalDrives:Number = QLocalDrives:Number + 1 ; QLocalDrives:Letter =
Chr(Char#) ; Add(QLocalDrives) ; End
Char# = Char# + 1 ; If
BAND(00010000000000000000000000000000b,D
rivesMask) > 0 then
QLocalDrives:Number = QLocalDrives:Number + 1 ; QLocalDrives:Letter =
Chr(Char#) ; Add(QLocalDrives) ; End
Char# = Char# + 1 ; If
BAND(00100000000000000000000000000000b,D
rivesMask) > 0 then
QLocalDrives:Number = QLocalDrives:Number + 1 ; QLocalDrives:Letter =
Chr(Char#) ; Add(QLocalDrives) ; End
Char# = Char# + 1 ; If
BAND(01000000000000000000000000000000b,D
rivesMask) > 0 then
QLocalDrives:Number = QLocalDrives:Number + 1 ; QLocalDrives:Letter =
Chr(Char#) ; Add(QLocalDrives) ; End
Char# = Char# + 1 ; If
BAND(10000000000000000000000000000000b,D
rivesMask) > 0 then
QLocalDrives:Number = QLocalDrives:Number + 1 ; QLocalDrives:Letter =
Chr(Char#) ; Add(QLocalDrives) ; End
G# = 0
Loop Records(QLocalDrives) Times
G# = G# + 1
Get(QLocalDrives,G#)
InputString = ''
InputString = QLocalDrives:Letter[1] & ':'
R# = GetDriveType(Address(InputString))
Case R#
Of 0
QLocalDrives:Type = 'DRIVE_UNKNOWN'
Put(QLocalDrives)
Of 1
QLocalDrives:Type = 'DRIVE_NO_ROOT_DIR'
Put(QLocalDrives)
Of 2
QLocalDrives:Type = 'DRIVE_REMOVABLE'
Put(QLocalDrives)
Of 3
QLocalDrives:Type = 'DRIVE_FIXED'
Put(QLocalDrives)
Of 4
QLocalDrives:Type = 'DRIVE_REMOTE'
Put(QLocalDrives)
Of 5
QLocalDrives:Type = 'DRIVE_CDROM'
Put(QLocalDrives)
Of 6
QLocalDrives:Type = 'DRIVE_RAMDISK'
Put(QLocalDrives)
End
QLocalDrives:RootPathName = QLocalDrives:Letter & ':'
lpFileSystemFlags# = 0
QLocalDrives:nVolumeNameSize = 255
QLocalDrives:FileSystemNameSize = 255
R# = GetVolumeInformation(Address(QLocalDrive
s:RootPathName),Address(QLocalDrives:Vol
umeName),
| &
QLocalDrives:nVolumeNameSize,Address(QLo
calDrives:VolumeSerialNumber),Address(QL
ocalDrives:MaximumComponentLength),
| &
Address(lpFileSystemFlags#),Address(QLoc
alDrives:FileSystemName),QLocalDrives:Fi
leSystemNameSize)
Put(QLocalDrives)
End
QFoldersNumberMax = QFoldersNumberMax + 1
QFolders:Number = QFoldersNumberMax
QFolders:Path = ''
QFolders:Name = 'My Computer'
QFolders:IcoCon = 471
QFolders:IcoExp = 471
QFolders:Parent = 1
QFolders:Level = 2
QFolders:IsExp = 1
QFolders:Collections = Records(QLocalDrives)
QFolders:Items = 0
QFolders:Line = 'My Computer'
QFolders:IsFolder = False
QFolders:LevelAgain = QFolders:Level
Add(QFolders)
CurrentParentQFolders = QFolders:Number
G# = 0
Loop Records(QLocalDrives) Times
G# = G# + 1
Get(QLocalDrives,G#)
QFoldersNumberMax = QFoldersNumberMax + 1
QFolders:Number = QFoldersNumberMax
QFolders:Path = QLocalDrives:Letter & ':'
QFolders:Name = QLocalDrives:VolumeName & ' (' &
QLocalDrives:Letter & ':)'
Case QLocalDrives:Type
Of 'DRIVE_FIXED'
QFolders:IcoCon = 472
QFolders:IcoExp = 472
Of 'DRIVE_CDROM'
QFolders:IcoCon = 473
QFolders:IcoExp = 473
End
QFolders:Parent = CurrentParentQFolders
QFolders:Collections = 0
QFolders:Items = 0
QFolders:Level = 3
QFolders:IsExp = 0
QFolders:Line = QLocalDrives:VolumeName & ' (' &
QLocalDrives:Letter & ':)'
QFolders:IsFolder = True
QFolders:LevelAgain = QFolders:Level
Add(QFolders)
TheFile = QLocalDrives:Letter & ':'
CurrentQFoldersLevel = QFolders:Level
CurrentParentQFoldersL3# = QFolders:Number
Clear(Q2Files)
Free(Q2Files)
Directory(Q2Files,Clip(TheFile)&'\*.*',02h+04h+010h+020h)
Sort(Q2Files,+Q2Files:Name)
LastPath = Clip(TheFile)
CurrentCollections = 0
CurrentItems = 0
G2# = 0
Loop Records(Q2Files) Times
G2# = G2# + 1
Get(Q2Files,G2#)
If Q2Files:ShortName[1] = '.' then Cycle.
If Q2Files:ShortName[1:2] = '..' then Cycle.
If Band(Q2Files:Attrib,010h) <> 0
CurrentCollections = CurrentCollections + 1
Else
CurrentItems = CurrentItems + 1
QItemsNumberMax = QItemsNumberMax + 1
QItems:Number = QItemsNumberMax
QItems:QFolderNumber = QFolders:number
QItems:Path = LastPath & ''
QItems:Name = Clip(Q2Files:Name)
P# =
Instring('.',QItems:Name,-1,Len(Clip(QItems:Name)))
If P# > 0
QItems:Extension = QItems:Name[P#+1 :
Len(Clip(QItems:Name))]
Else
QItems:Extension = ''
End
QItems:Size = Q2Files:Size
QItems:Year = Year(Q2Files:Date)
QItems:Month = Month(Q2Files:Date)
QItems:Day = Day(Q2Files:Date)
QItems:Date = Q2Files:Date
QItems:Time = Q2Files:Time
QItems:Hour = ((Q2Files:Time/100) /
60) /60
QItems:Minutes = ((Q2Files:Time/100) -
(QItems:Hour*3600)) /60
QItems:Seconds = Q2Files:Time/100
QItems:DaySeconds = Q2Files:Time/100
QItems:Attrib = Q2Files:Attrib
QItems:AttribString = Q2Files:Attrib
If Band(Q2Files:Attrib,1h) > 0
QItems:ReadOnly = 1
Else
QItems:ReadOnly = 0
End
If Band(Q2Files:Attrib,2h) > 0
QItems:Hidden = 1
Else
QItems:Hidden = 0
End
If Band(Q2Files:Attrib,4h) > 0
QItems:System = 1
Else
QItems:System = 0
End
If Band(Q2Files:Attrib,20h) > 0
QItems:Archive = 1
Else
QItems:Archive = 0
End
Add(QItems)
End
End
QFolders:Collections = CurrentCollections
QFolders:Items = CurrentItems
Put(QFolders)
CurrentQFoldersLevel = CurrentQFoldersLevel + 1
CurrentCollections = 0
CurrentItems = 0
G2# = 0
Loop Records(Q2Files) Times
G2# = G2# + 1
Get(Q2Files,G2#)
If Q2Files:ShortName[1] = '.' then Cycle.
If Q2Files:ShortName[1:2] = '..' then Cycle.
If Band(Q2Files:Attrib,010h) <> 0
QFoldersNumberMax =
QFoldersNumberMax + 1
QFolders:Number =
QFoldersNumberMax
QFolders:Path =
Clip(LastPath)&''&Clip(Q2Files:Name)
QFolders:Name =
Clip(Q2Files:Name)
QFolders:Line =
Clip(Q2Files:Name)
QFolders:IcoCon = 477
QFolders:IcoExp = 477
QFolders:Level =
CurrentQFoldersLevel
QFolders:IsExp = False
QFolders:Parent =
CurrentParentQFoldersL3#
QFolders:Collections = 0
QFolders:Items = 0
QFolders:IsFolder = True
QFolders:LevelAgain = QFolders:Level
Add(QFolders)
Clear(Q3Files)
Free(Q3Files)
Directory(Q3Files,Clip(QFolders:Path)&'\*.*',02h+04h+010h+020h)
Sort(Q3Files,+Q3Files:Name)
CurrentCollections = 0
CurrentItems = 0
G3# = 0
Loop Records(Q3Files) Times
G3# = G3# + 1
Get(Q3Files,G3#)
If Q3Files:ShortName[1] = '.' then
Cycle.
If Q3Files:ShortName[1:2] = '..' then
Cycle.
If Band(Q3Files:Attrib,010h) <> 0
CurrentCollections = CurrentCollections +
1
Else
CurrentItems = CurrentItems + 1
QItemsNumberMax = QItemsNumberMax + 1
QItems:Number = QItemsNumberMax
QItems:QFolderNumber = QFolders:number
QItems:Path = QFolders:Path
QItems:Name = CLip(Q3Files:Name)
P# =
Instring('.',QItems:Name,-1,Len(Clip(QItems:Name)))
If P# > 0
QItems:Extension = QItems:Name[P#+1 :
Len(Clip(QItems:Name))]
Else
QItems:Extension = ''
End
QItems:Size = Q3Files:Size
QItems:Year =
Year(Q3Files:Date)
QItems:Month =
Month(Q3Files:Date)
QItems:Day =
Day(Q3Files:Date)
QItems:Date = Q3Files:Date
QItems:Time = Q3Files:Time
QItems:Hour =
((Q3Files:Time/100) / 60) /60
QItems:Minutes =
((Q3Files:Time/100) - (QItems:Hour*3600)) /60
QItems:Seconds = Q3Files:Time/100
QItems:DaySeconds = Q3Files:Time/100
QItems:Attrib = Q3Files:Attrib
QItems:AttribString = Q3Files:Attrib
If Band(Q3Files:Attrib,1h) > 0
QItems:ReadOnly = 1
Else
QItems:ReadOnly = 0
End
If Band(Q3Files:Attrib,2h) > 0
QItems:Hidden = 1
Else
QItems:Hidden = 0
End
If Band(Q3Files:Attrib,4h) > 0
QItems:System = 1
Else
QItems:System = 0
End
If Band(Q3Files:Attrib,20h) > 0
QItems:Archive = 1
Else
QItems:Archive = 0
End
Add(QItems)
End
End
QFolders:Collections = CurrentCollections
QFolders:Items = CurrentItems
Put(QFolders)
Else
End
End
CurrentQFoldersLevel = CurrentQFoldersLevel - 1
End
| |
| google 2004-09-24, 8:55 pm |
| greetz,
Menno de Ruiter
R# = SHGetSpecialFolderLocation(0{prop:Handle
},05h,ADDRESS(ppidl))
R# = SHGetPathFromIDList(ppidl,Address(TheFil
e))
thus you use instead of 05h,-> 24h
#ifndef CSIDL_PERSONAL
#define CSIDL_PERSONAL 0x0005 // My Documents
#endif
#ifndef CSIDL_MYMUSIC
#define CSIDL_MYMUSIC 0x000d // "My Music"
folder
#endif
#ifndef CSIDL_APPDATA
#define CSIDL_APPDATA 0x001A // Application
Data, new for NT4
#endif
#ifndef CSIDL_LOCAL_APPDATA
#define CSIDL_LOCAL_APPDATA 0x001C // non roaming,
user\Local Settings\Application Data
#define CSIDL_INTERNET_CACHE 0x0020
#define CSIDL_COOKIES 0x0021
#define CSIDL_HISTORY 0x0022
#define CSIDL_COMMON_APPDATA 0x0023 // All
Users\Application Data
#define CSIDL_WINDOWS 0x0024 //
GetWindowsDirectory()
#define CSIDL_SYSTEM 0x0025 //
GetSystemDirectory()
#define CSIDL_PROGRAM_FILES 0x0026 // C:\Program
Files
#define CSIDL_MYPICTURES 0x0027 // My Pictures,
new for Win2K
#define CSIDL_PROGRAM_FILES_COMMON 0x002b // C:\Program
Files\Common
#define CSIDL_COMMON_DOCUMENTS 0x002e // All
Users\Documents
#define CSIDL_RESOURCES 0x0038 //
%windir%\Resources\, For theme and other windows resources.
#define CSIDL_RESOURCES_LOCALIZED 0x0039 //
%windir%\Resources\<LangID>, for theme and other windows specific
resources.
#define CSIDL_FLAG_CREATE 0x8000 // new for Win2K,
or this in to force creation of folder
#define CSIDL_COMMON_ADMINTOOLS 0x002f // All Users\Start
Menu\Programs\Administrative Tools
#define CSIDL_ADMINTOOLS 0x0030 // <user
name>\Start Menu\Programs\Administrative Tools
#endif // CSIDL_LOCAL_APPDATA
"Ivo Ivanov" <iivanov@modest.nl> wrote in message news:<413733ff$0$20576$6c56d894@diablo.nl.easynet.net>...[color=darkred]
> MODULE('win32')
> GetWindowsDirectory(*CSTRING lpBuffer, ULONG
> SIZE),ULONG,RAW,PASCAL,NAME('GetWindowsD
irectoryA')
> END
>
> And in your code you do
>
> LOC:WinDir CSTRING(256)
>
> GetWindowsDir(LOC:WinDir, 255)
>
> et voila
> Ivo
>
> "Siniša" <pc_uslugeNOSPAM@mail.inet.hr> schreef in bericht
> news:ch750g$pk6$1@sunce.iskon.hr...
|
|
|
|
|