1. How do I get system information such as the disk size etc?
Many items of system information are available to your programs. This includes such things as
the version of Windows, the amount of installed memory and the free disk space. The following
window shows the system information:
The information was generated by the following program:
Ubercode 1 Class Pcinfo
uses commdlgs timeutil
private function GetInfo(out InfoStr:string[*])
DiskName : string[*]
DiskId : integer(0:MAXINT)
OsName : string[*]
OsMajor : integer(0:MAXINT)
OsMinor : integer(0:MAXINT)
call Dirlabel("\", DiskName, DiskId)
call Systeminfo(OsName, OsMajor, OsMinor)
"Application directory = " + Dirstart() + NL +
"Application name = " + Appname() + NL +
"Command processor = " + Environ("COMSPEC") + NL +
"Current disk and directory = " + Dirpath() + NL +
"Date/Time = " + FormatTime(Time(),FMT_GENERAL) + NL +
"Disk free space = " + Str(Int(Dirsize("\")/1e6)) + " MB" + NL +
"Disk label = " + DiskName + NL +
"Disk serial number = " + Hexstr(DiskId,8,"0") + NL +
"Memory (physical) = " + Str(Int(Meminfo(3)/1024)) + " KB" + NL +
"Memory (stack space) = " + Str(Int(Meminfo(1)/1024)) + " KB" + NL +
"Memory (total available) = " + Str(Int(Meminfo(2)/1024)) + " KB" + NL +
"Operating system = " + OsName + " (v" + Str(OsMajor) + "." + Str(OsMinor) + ")" + NL +
"Program arguments = " + Arguments + NL +
"Screen size = " + Str(GetPagewidth(Sysscreen)) + " x " + Str(GetPageheight(Sysscreen)) + NL +
"Windows directory = " + Environ("WINDIR") + NL
public function main()
call Msgbox("PcInfo program", GetInfo())
The program starts at function main above. It plays the Microsoft startup sound, then it
calls GetInfo. The GetInfo function obtains all the system information, and neatly
formats it into a string which it then returns. Back in main the system information is shown
in a message box.
2. Is there a list of system information functions?
This table shows the different types of system information available to your programs:
||Get the directory / folder storing the application's main EXE file. The folder returned by
Dirstart does not change as the application runs.
||Get the name of the application. This is the same as the filename, but without the ".exe"
||Get the name of the command processor (command window or DOS prompt). This is command.com or
cmd.exe depending on the version of Windows.
|Current disk and directory
||Get the full path of the current logged disk drive. This is the place relative to which files
are stored, except where specified using a full path name. The path returned by Dirpath can
change as the application runs.
||Get the current date and time. This is returned in the format YYYY-MM-DD hh:mm:ss.dddd
where YYYY MM DD are the year, month and date, and hh mm ss dddd are hours, minutes,
seconds and decimal places. This is the international standard ISO 8601 for Date and Time
|Disk free space
||Get the total amount of free disk space in bytes.
|Disk label / Disk serial number
||Get the name and serial number of the disk drive.
||Get the amount of free stack space available to the running application.
|Memory (stack space)
||Get the amount of memory physically installed in the computer.
|Memory (total available)
||Get the total amount of memory available to the application. This includes physical installed
memory and virtual memory.
||Get the version of Windows (2000, XP etc) and the Windows version number.
||Get the list of printers attached to the computer (it is possible for there to be no attached
||Get the arguments passed to the application. Arguments are passed either on the command line,
or as a result of calling the application from another program or script.
||GetDpiX / GetDpiY
||Get the number of pixels per inch on the screen. These functions also work with the printed
||Pageheight / Pagewidth
||Get the size (measured in pixels) of the computer screen. These functions also work with the
||Get the directory containing the Windows operating system.
3. How do I get the Windows version?
Use the Systeminfo function:
Ubercode 1 Class Info
public function main()
name : string[*]
major : integer(0:MAXINT)
minor : integer(0:MAXINT)
call Systeminfo(name, major, minor)
call Msgbox("Systeminfo", name+" "+Str(major)+"."+Str(minor))
The Systeminfo function returns the name of the operating system, and the major and minor
version numbers. For example if the Windows version is 4.0 the major version number is 4 and the
minor version number is 0. The Msgbox function displays the name of the operating system and
converts the version numbers to strings. The example program above can be compiled and run to get
the Windows version.
4. How do I read environment variables?
Use Environ which can return the value of any environment variable. For example
Environ("COMSPEC") returns the path of the Windows command processor (command.com or