15)、GetKeyBoardType:
choose case uo_1.of_GetKeyboardType()
case 1
sle_keyboard.text = "IBM PC/XT( ) or compatible (83-key) keyboard"
case 2
sle_keyboard.text = "Olivetti 'ICO' (102-key) keyboard"
case 3
sle_keyboard.text = "IBM PC/AT (84-key) or similar keyboard"
case 4
sle_keyboard.text = "IBM enhanced (101- or 102-key) keyboard"
case 5
sle_keyboard.text = "Nokia 1050 and similar keyboards"
case 6
sle_keyboard.text = "Nokia 9140 and similar keyboards"
case 7
sle_keyboard.text = "Japanese keyboard"
case else
sle_keyboard.text = "Hardware dependent and specified by the OEM"
End choose
16)、GetWindowMode:
sle_windowmode.text = uo_1.of_getwindowmode()
21)、GetDiskInfo:
lv_1.deletecolumns()
lv_1.deleteitems()
lv_1.addcolumn("Driver",Left!,250)
lv_1.addcolumn("FileSystem",Left!,350)
lv_1.addcolumn("VolumeName",Left!,400)
lv_1.addcolumn("VolumeSerialNumber",Left!,650)
lv_1.addcolumn("MaxComponentLength",Left!,650)
lv_1.addcolumn("FileSystemFlags",Left!,500)
lv_1.addcolumn("SectorsPerCluster",Left!,600)
lv_1.addcolumn("BytesPerSector",Left!,500)
lv_1.addcolumn("NumberofFreeClusters",Left!,700)
lv_1.addcolumn("TotalNumberofClusters",Left!,750)
lv_1.addcolumn("FreeDiskVolume",Left!,600)
lv_1.addcolumn("TotalDiskVolume",Left!,650)
lv_1.addcolumn("Used Ratio",Left!,350)
String ls_drive,ls_status
ls_drive = "abcdefghijklmnopqrstuvwxyz"
Integer li_i
For li_i = 1 to 26
ls_status = uo_1.of_getdrivetype(mid(ls_drive,li_i,1)+":\")
if ls_status<>"Drive Does Not exist" Then
uo_1.of_getvolumeInfo(mid(ls_drive,li_i,1)+":\")
uo_1.of_getdiskvolume(mid(ls_drive,li_i,1)+":\")
Choose case lower(ls_status)
case "floppy driver"
if uo_1.mbtotal = 0 Then
lv_1.Additem(mid(ls_drive,li_i,1)+":\"+"~t"+trim(string(uo_1.FileSystem))+"~t"+trim(string(uo_1.VolumeName))+"~t"+string(uo_1.VolumeSerialNumber)+"~t"+string(uo_1.MaxComponentLength)+"~t"+string(uo_1.FileSystemFlags)+"~t"+string(uo_1.SectorsPerCluster)+"~t"+string(uo_1.BytesPerSector)+"~t"+string(uo_1.NumberofFreeClusters)+"~t"+string(uo_1.TotalNumberofClusters)+"~t"+string(uo_1.mbfree)+"MB"+"~t"+string(uo_1.mbtotal)+"MB"+"~t"+"0%",1)
else
lv_1.Additem(mid(ls_drive,li_i,1)+":\"+"~t"+trim(string(uo_1.FileSystem))+"~t"+trim(string(uo_1.VolumeName))+"~t"+string(uo_1.VolumeSerialNumber)+"~t"+string(uo_1.MaxComponentLength)+"~t"+string(uo_1.FileSystemFlags)+"~t"+string(uo_1.SectorsPerCluster)+"~t"+string(uo_1.BytesPerSector)+"~t"+string(uo_1.NumberofFreeClusters)+"~t"+string(uo_1.TotalNumberofClusters)+"~t"+string(uo_1.mbfree)+"MB"+"~t"+string(uo_1.mbtotal)+"MB"+"~t"+String(Long(((uo_1.mbtotal - uo_1.mbfree)/uo_1.mbtotal)*100))+"%",1)
End if
Case "harddisk driver"
if uo_1.mbtotal = 0 Then
lv_1.Additem(mid(ls_drive,li_i,1)+":\"+"~t"+trim(string(uo_1.FileSystem))+"~t"+trim(string(uo_1.VolumeName))+"~t"+string(uo_1.VolumeSerialNumber)+"~t"+string(uo_1.MaxComponentLength)+"~t"+string(uo_1.FileSystemFlags)+"~t"+string(uo_1.SectorsPerCluster)+"~t"+string(uo_1.BytesPerSector)+"~t"+string(uo_1.NumberofFreeClusters)+"~t"+string(uo_1.TotalNumberofClusters)+"~t"+string(uo_1.mbfree)+"MB"+"~t"+string(uo_1.mbtotal)+"MB"+"~t"+"0%",2)
else
lv_1.Additem(mid(ls_drive,li_i,1)+":\"+"~t"+trim(string(uo_1.FileSystem))+"~t"+trim(string(uo_1.VolumeName))+"~t"+string(uo_1.VolumeSerialNumber)+"~t"+string(uo_1.MaxComponentLength)+"~t"+string(uo_1.FileSystemFlags)+"~t"+string(uo_1.SectorsPerCluster)+"~t"+string(uo_1.BytesPerSector)+"~t"+string(uo_1.NumberofFreeClusters)+"~t"+string(uo_1.TotalNumberofClusters)+"~t"+string(uo_1.mbfree)+"MB"+"~t"+string(uo_1.mbtotal)+"MB"+"~t"+String(Long(((uo_1.mbtotal - uo_1.mbfree)/uo_1.mbtotal)*100))+"%",2)
End if
case "cd-rom driver"
if uo_1.mbtotal = 0 Then
lv_1.Additem(mid(ls_drive,li_i,1)+":\"+"~t"+trim(string(uo_1.FileSystem))+"~t"+trim(string(uo_1.VolumeName))+"~t"+string(uo_1.VolumeSerialNumber)+"~t"+string(uo_1.MaxComponentLength)+"~t"+string(uo_1.FileSystemFlags)+"~t"+string(uo_1.SectorsPerCluster)+"~t"+string(uo_1.BytesPerSector)+"~t"+string(uo_1.NumberofFreeClusters)+"~t"+string(uo_1.TotalNumberofClusters)+"~t"+string(uo_1.mbfree)+"MB"+"~t"+string(uo_1.mbtotal)+"MB"+"~t"+"0%",3)
else
lv_1.Additem(mid(ls_drive,li_i,1)+":\"+"~t"+trim(string(uo_1.FileSystem))+"~t"+trim(string(uo_1.VolumeName))+"~t"+string(uo_1.VolumeSerialNumber)+"~t"+string(uo_1.MaxComponentLength)+"~t"+string(uo_1.FileSystemFlags)+"~t"+string(uo_1.SectorsPerCluster)+"~t"+string(uo_1.BytesPerSector)+"~t"+string(uo_1.NumberofFreeClusters)+"~t"+string(uo_1.TotalNumberofClusters)+"~t"+string(uo_1.mbfree)+"MB"+"~t"+string(uo_1.mbtotal)+"MB"+"~t"+String(Long(((uo_1.mbtotal - uo_1.mbfree)/uo_1.mbtotal)*100))+"%",3)
End if
End Choose
End If
End For
//FileSystem= lpFileSystemNameBuffer
//VolumeName = lpVolumeNameBuffer
//VolumeSerialNumber=lpVolumeSerialNumber
//MaxComponentLength = lpMaximumComponentLength
//FileSystemFlags=lpFileSystemFlags
8、效果图:
string ls_username,ls_cmpname
ulong ll_length,lul_runtime
ls_cmpname = ""
ls_username = space(64)
ll_length = 64
lul_runtime=WNetGetUser(ls_cmpName,ls_UserName,ll_Length)
If lul_runtime=0 then
return ls_UserName
else
return "Error"
End if
9)、of_GetMacAddress(),获得网卡的物理地址。
long lana[254],ll_lananum,mac[6]
long i,j
If Not FileExists("utils.dll") Then
MessageBox("错误","无法找到 utils.dll 文件")
Return ""
End If
j=1
String ls_macaddress[254]
ll_lananum = GetLanaID(lana)
for i=1 to ll_lananum
if GetMacAddress(lana[i],mac) = 0 then
ls_macaddress[j] = string(mac[1])+"," +string(mac[2])+"," + string(mac[3])+"," +
string(mac[4])+"," + string(mac[5])+"," + string(mac[6])
j++
end if
next
string ls_return
For i = 1 to j
If ls_macaddress[i]="" Then exit
ls_return = ls_return+ls_macaddress[i]+"|"
next
return ls_return
IF not Fileexists("Mydll.dll") Then
MessageBox("错误","无法找到 MyDll.dll !!!")
return 0
End If
ulong ul_mhz
ul_mhz = GetMhz()
return ul_mhz
12)、of_GetNetCard(),获得网卡的名称。
environment l_env
getenvironment(l_env)
Integer li_rtn
string ls_username
Choose case l_env.ostype
case Windows!
li_rtn =
RegistryGet("HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Class\Net\0000","DriverDesc",
RegString!,ls_username)
If li_rtn <> 1 Then
li_rtn =
RegistryGet("HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Class\Net\0001","DriverDesc",
RegString!,ls_username)
if li_rtn<> 1 Then
ls_username = "Ether Netword Card can not be detected"
End if
End if
case WindowsNT!
RegistryGet("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\
CurrentVersion\NetworkCards\1","Title",RegString!,ls_username)
End choose
return ls_username
13)、of_GetOSVersion(),获得操作系统版本。
Environment l_env
string ls_osver
GetEnvironment(l_env)
Choose case l_env.ostype
CASE Macintosh!
ls_osver =
"Macintosh "+string(l_env.OSMajorRevision)+"."+string(l_env.OSMinorRevision)
CASE aix!
ls_osver = "Aix "+string(l_env.OSMajorRevision)+"."+string(l_env.OSMinorRevision)
CASE Windows!
If l_env.OSMajorRevision>=4 and l_env.OSMinorRevision>0 then
ls_osver = "Windows 98"
else
ls_osver = "Windows 95"
End if
CASE WindowsNT!
RegistryGet("HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\ProductOptions",
"ProductType",RegString!,ls_osver)
If ls_osver = "WinNT" then
ls_osver = "Windows NT WorkStation"
elseif ls_osver = "ServerNT" then
ls_osver = "Windows NT Server"
else
ls_osver = "Windows NT Domain Controler"
End if
CASE ELSE
ls_osver = "Unknown OS"
End Choose
Return ls_osver
string ls_username
long ll_rtn
ll_rtn = RegistryGet("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion",
"CSDVersion",RegString!,ls_username)
If ll_rtn = -1 then
ls_username="ERROR"
end if
return ls_username
ulong ll_length
ll_length = GetSystemMetrics(67)
Choose case ll_length
case 1
return "Safe Mode"
case 2
return "Safe Mode With NetSupport"
case else
return "Normal Mode"
End choose
4)、GetDriverType:
String ls_drive
ls_drive = "abcdefghijklmnopqrstuvwxyz"
Integer li_i
For li_i = 1 to 26
ddlb_drivetype.additem(mid(ls_drive,li_i,1)+":\ "+uo_1.of_getdrivetype(mid(ls_drive,li_i,1)+":\"))
End For
ddlb_drivetype.selectitem(1)
4、定义u_sysinfo的实例变量。
public:
string cpuid,cpuprovider
string filesystem,volumename
ulong VolumeSerialNumber,MaxComponentLength,FileSystemFlags
long dlength,dmemoryload,dtotalphys,davailphys,dtotalpagefile
long davailpagefile,dtotalvirtual,davailvirtual
ulong dwoemid,dwpagesize,lpminappaddress,lpmaxappaddress,dwactiveprocessormask
ulong dwnumberofprocessors,dwprocessortype,dwallocationgranularity,dwreserved
ulong sectorspercluster,bytespersector,numberoffreeclusters,totalnumberofclusters
ulong mbtotal,mbfree
5、定义u_sysinfo的局部外部函数
PUBLIC FUNCTION ulong GetComputerName(ref string lpBuffer,ref ulong nSize) LIBRARY "kernel32.dll"
ALIAS FOR "GetComputerNameA"
PUBLIC FUNCTION ulong GetDriveType(string nDrive) LIBRARY "kernel32.dll" ALIAS FOR "GetDriveTypeA"
FUNCTION ulong GetDiskFreeSpace(ref string lpRootPathName,ref ulong lpSectorsPerCluster,ref ulong
lpBytesPerSector,ref ulong lpNumberOfFreeClusters,ref ulong lpTtoalNumberOfClusters)
LIBRARY "kernel32.dll" ALIAS FOR "GetDiskFreeSpaceA"
PUBLIC FUNCTION ulong GetTickCount() LIBRARY "kernel32.dll"
PUBLIC Subroutine GetSystemInfo(ref ws_info lpSystemInfo) LIBRARY "kernel32.dll"
PUBLIC FUNCTION ulong waveOutGetNumDevs() LIBRARY "winmm.dll"
PUBLIC FUNCTION ulong WNetGetUser(ref string lpName,ref string lpUserName,ref ulong lpnLength)
LIBRARY "mpr" ALIAS FOR "WNetGetUserA"
PUBLIC FUNCTION ulong GetSystemMetrics(ulong nIndex) LIBRARY "user32.dll"
PUBLIC FUNCTION ulong GetWindowsDirectory(ref string lpBuffer,ulong nSize) LIBRARY "kernel32.dll"
ALIAS FOR "GetWindowsDirectoryA"
PUBLIC FUNCTION ulong GetSystemDirectory(ref string lpBuffer,ulong nSize) LIBRARY "kernel32.dll"
ALIAS FOR "GetSystemDirectoryA"
PUBLIC FUNCTION ulong GetTempPath(ulong nBufferLength,ref string lpBuffer) LIBRARY "kernel32.dll"
ALIAS FOR "GetTempPathA"
PUBLIC FUNCTION ulong GetKeyboardType(ulong nTypeFlag) LIBRARY "user32.dll"
PUBLIC FUNCTION ulong QueryPerformanceFrequency(ref double lpFrequency) LIBRARY "kernel32.dll"
PUBLIC FUNCTION ulong QueryPerformanceCounter(ref ulong lpPerformanceCount) LIBRARY "kernel32.dll"
//PUBLIC FUNCTION ulong EnumPrinterDrivers(ref string pName,ref string pEnvironment,ulong Level,ref
Byte pDriverInfo,ulong cdBuf,ref ulong pcbNeeded,ref ulong pcRetruned) LIBRARY
"winspool.drv" ALIAS FOR "EnumPrinterDriversA"
PUBLIC Subroutine GlobalMemoryStatus(ref ws_memory lpBuffer) LIBRARY "kernel32.dll"
//FUNCTIONon ulong GlobalReAlloc(ulong hMem,ulong dwBytes,ulong wFlags) LIBRARY "kernel32.dll"
PUBLIC FUNCTION ulong RegOpenKey(ulong hKey,ref string lpSubKey,ref ulong phkResult) LIBRARY
"advapi32.dll" ALIAS FOR "RegOpenKeyA"
PUBLIC FUNCTION ulong RegCloseKey(ulong hKey) LIBRARY "advapi32.dll"
PUBLIC FUNCTION ulong RegQueryValueEx(ulong hKey,ref string lpValueName,ulong lpReserved,ref ulong
lpType,ref long lpData,ref ulong lpcbData) LIBRARY "advapi32.dll" ALIAS FOR
"RegQueryValueExA"
//Function ulong EnumDisplaySettingsA(ulong xx,ulong modenum,ref DEVMODE
lpdevmode)Library"kernel32.dll"
//PUBLIC FUNCTION ulong DeviceCapabilities(ref string lpDeviceName,ref string lpPort,ulong
iIndex,ref string lpOutput,ref DEVMODE lpDevMode) LIBRARY "winspool.drv" ALIAS FOR
"DeviceCapabilitiesA"
PUBLIC FUNCTION ulong GetVolumeInformation(string lpRootPathName,ref string lpVolumeNameBuffer,
ulong nVolumeNameSize,ref ulong lpVolumeSerialNumber,ref ulong lpMaximumComponentLength,
ref ulong lpFileSystemFlags,ref string lpFileSystemNameBuffer,ulong nFileSystemNameSize)
LIBRARY "kernel32.dll" ALIAS FOR "GetVolumeInformationA"
FUNCTION long GetMACAddress(long lana,ref long addr[6]) Library "utils.dll"
FUNCTION long GetLanaID(ref long lana[254]) LIBRARY "utils.dll"
Function ulong GetMHZ()Library"mydll.dll"