Hi there,
I need some help on a probably simple issue. I am using the NSIS system plugin to get info about the users disk space.
In the example system.nsi i found a function that displays the users diskspace in a pop-up window. I want that information to be put in a .txt-file.
this is code for the popup window:
System::Call '${sysMessageBox}($HWNDPARENT, s, "System Example 2", ${MB_OKCANCEL})' "$7"
I have read the helpfile from the system plugin, but i can't follow it. can someone enlighten me?
Thanks
NSIS System Plugin
6 posts
i guess $7 is the variable storing the disk space info. you can use the file instructions to put that in a .txt file (there's an example either with nsis or in the archive)
Thanks,
yes, i figured that out too... the only thing is that "$7" contains more data than i need. i just want to know the free space on c:\
"$7" contains a string which is designed to fit into a "scheme", therefore it is "polluted" with lots of spaces.
Is there a string-command to remove spaces?
yes, i figured that out too... the only thing is that "$7" contains more data than i need. i just want to know the free space on c:\
"$7" contains a string which is designed to fit into a "scheme", therefore it is "polluted" with lots of spaces.
Is there a string-command to remove spaces?
Using StrCpy to trim the string might be a start. you might also find the function StrStr usefull, for searching for one string within another.
both are in the NSIS Documentation
both are in the NSIS Documentation
thanx guys, you helped me out
look between ;------ lines
; Memory for paths
System::Alloc 1024
Pop $1
; Get drives
System::Call '${sysGetLogicalDriveStrings}(1024, r1)'
enumok:
; One more drive?
System::Call '${syslstrlen}(i r1) .r2'
IntCmp $2 0 enumex
; Is it DRIVE_FIXED?
System::Call '${sysGetDriveType} (i r1) .r3'
StrCmp $3 ${DRIVE_FIXED} 0 enumnext
; Drive space
System::Call '${sysGetDiskFreeSpaceEx}(i r1, .r3, .r4, .r5)'
; Get pretty drive path string
System::Call '*$1(&t1024 .r6)'
; -------------------------------------------
; here $6 - drive path,
; $3 - full disk space in bytes
; $4 - free disk space in bytes
; -------------------------------------------
enumnext:
; Next drive path
IntOp $1 $1 + $2
IntOp $1 $1 + 1
goto enumok
enumex: ; End of drives or user cancel
; Free memory for paths
System::Free $1
; Memory for paths
System::Alloc 1024
Pop $1
; Get drives
System::Call '${sysGetLogicalDriveStrings}(1024, r1)'
enumok:
; One more drive?
System::Call '${syslstrlen}(i r1) .r2'
IntCmp $2 0 enumex
; Is it DRIVE_FIXED?
System::Call '${sysGetDriveType} (i r1) .r3'
StrCmp $3 ${DRIVE_FIXED} 0 enumnext
; Drive space
System::Call '${sysGetDiskFreeSpaceEx}(i r1, .r3, .r4, .r5)'
; Get pretty drive path string
System::Call '*$1(&t1024 .r6)'
; -------------------------------------------
; here $6 - drive path,
; $3 - full disk space in bytes
; $4 - free disk space in bytes
; -------------------------------------------
enumnext:
; Next drive path
IntOp $1 $1 + $2
IntOp $1 $1 + 1
goto enumok
enumex: ; End of drives or user cancel
; Free memory for paths
System::Free $1