网上介绍说调用DLL,但是没有找到,哪位大侠能提供一下,非常感谢!
8 个解决方案
#1
PBPB获取没有弄过,帮顶!
#2
是的,可以的。
声明win32 API函数:
function int WSAStartup( uint UIVersionRequested, ref s_WSAData lpWSAData ) library "wsock32.dll"
function int WSACleanup() library "wsock32.dll"
function int WSAGetLastError ( ) library "wsock32.dll"
function int gethostname ( ref string name, int namelen ) library "wsock32.dll"
function string GetHost(string lpszhost, ref blob lpszaddress ) library "pbws32.dll"
使用方法:
s_wsadata l_WSAData
string ls_HostName = space(128)
string ls_IpAddress
int li_version = 257
blob{4} lb_hostaddress
IF wsastartup ( li_version, l_WSAData ) = 0 THEN
IF gethostname ( ls_HostName, len(ls_HostName) ) < 0 THEN
messagebox("GetHostName",WSAGetLastError())
ELSE
GetHost(ls_HostName, lb_HostAddress)
ls_IpAddress = string(asc(string(blobmid(lb_HostAddress,1,1))),"000") + "."
ls_IpAddress += string(asc(string(blobmid(lb_HostAddress,2,1))),"000") + "."
ls_IpAddress += string(asc(string(blobmid(lb_HostAddress,3,1))),"000") + "."
ls_IpAddress += string(asc(string(blobmid(lb_HostAddress,4,1))),"000")
END IF
WSACleanup()
ELSE
messagebox("GetHostName",WSAGetLastError())
END IF
sle_1.text=ls_hostname
sle_2.text=ls_ipaddress
声明win32 API函数:
function int WSAStartup( uint UIVersionRequested, ref s_WSAData lpWSAData ) library "wsock32.dll"
function int WSACleanup() library "wsock32.dll"
function int WSAGetLastError ( ) library "wsock32.dll"
function int gethostname ( ref string name, int namelen ) library "wsock32.dll"
function string GetHost(string lpszhost, ref blob lpszaddress ) library "pbws32.dll"
使用方法:
s_wsadata l_WSAData
string ls_HostName = space(128)
string ls_IpAddress
int li_version = 257
blob{4} lb_hostaddress
IF wsastartup ( li_version, l_WSAData ) = 0 THEN
IF gethostname ( ls_HostName, len(ls_HostName) ) < 0 THEN
messagebox("GetHostName",WSAGetLastError())
ELSE
GetHost(ls_HostName, lb_HostAddress)
ls_IpAddress = string(asc(string(blobmid(lb_HostAddress,1,1))),"000") + "."
ls_IpAddress += string(asc(string(blobmid(lb_HostAddress,2,1))),"000") + "."
ls_IpAddress += string(asc(string(blobmid(lb_HostAddress,3,1))),"000") + "."
ls_IpAddress += string(asc(string(blobmid(lb_HostAddress,4,1))),"000")
END IF
WSACleanup()
ELSE
messagebox("GetHostName",WSAGetLastError())
END IF
sle_1.text=ls_hostname
sle_2.text=ls_ipaddress
#3
楼上写的是获取ip地址不是mac地址....
#4
获得系统基本信息
(独孤求败二零零四年二月十二日整理于深圳市南山区)
当一个应用程序在工作时,会不可避免地和操作系统发生数据交换,虽然在PB中提供了Environment对象来获得系统的一些信息,然而这些信息往往是不够的,比如CPU、本机IP地址等,这些内容只有用Windows API来获得了。
1、建立一个工作空间(workspace),取名为:systeminfo。
2、建立一个应用(application),取名为:systeminfo。
3、创建用户对象u_sysinfo,并添加Microsoft Winsock OCX控件。
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"
6、用户对象级函数
1)、of_GetComputerName(),获得计算机的标识(即计算机名)。
ulong ll_comsize
ulong ll_flag
ll_comsize = 256
string ls_computerName
//获得计算机的名称
ll_flag = GetComputerName(ls_computerName,ll_comsize)
If ll_flag<> 1 then
return "Get Computer Failure"
else
return ls_computerName
End if
2)、of_GetCpuInfo(),获得CPU一些基本信息。
ws_cpuinfo lstr_cpu
string ls_temp
RegistryGet("HKEY_LOCAL_MACHINE\Hardware\Description\System\CentralProcessor\0","Identifier",RegString!,ls_temp)
lstr_cpu.cpuid = ls_temp
cpuid = ls_temp
RegistryGet("HKEY_LOCAL_MACHINE\Hardware\Description\System\CentralProcessor\0","VendorIdentifier",RegString!,ls_temp)
lstr_cpu.cpuprovider = ls_temp
cpuprovider = ls_temp
3)、of_GetCpuStatus(),获得CPU当前的使用频率,是从0%到100%之间的一个常数。
ulong ls_username,lpcbData,lpType
lpcbData = 4
lpType = 4
ulong phkResult
ls_username = 0
string lbSubkey
long lpData
lbSubkey = "PerfStats\StatData"
ls_username = RegOpenKey(16*16*16*16*16*16*16*8+6,lbSubKey,phkResult)//The first parameters is HKEY_DYN_DATA = &80000006(HANDLE)
string lpValueName
lpValueName = "KERNEL\CPUUsage"
ls_username = RegQueryValueEx(phkResult,lpValueName,0,lpType,lpData,lpcbData)
ls_username = RegCloseKey(phkResult)
return lpdata
4)、of_GetDiskVolume(),获得磁盘空间大小。
ulong ll_MBFree
ulong ll_MBTotal
ulong ll_sectorspercluster // Sectors/Cluster
ulong ll_bytespersector // Bytes/Sector
ulong ll_numberoffreeclusters // Number of Free Clusters
ulong ll_toalnumberofclusters // Total Number of Clusters
GetDiskFreeSpace(as_driver, ll_sectorspercluster, ll_bytespersector,ll_numberoffreeclusters,
ll_toalnumberofclusters)
sectorspercluster=ll_sectorspercluster
bytespersector=ll_bytespersector
numberoffreeclusters=ll_numberoffreeclusters
totalnumberofclusters=ll_toalnumberofclusters
mbfree = (ll_sectorspercluster * ll_bytespersector * (ll_numberoffreeclusters / 1024)) / 1024
mbtotal = (ll_sectorspercluster * ll_bytespersector * (ll_toalnumberofclusters / 1024)) / 1024
5)、of_GetDriverType(),获得各个磁盘的种类。
ulong ul_drivetype
string ls_drive
ul_drivetype = GetDriveType(a_drivename)
choose case ul_drivetype
case 0
ls_Drive = "Unknown Driver"
Case 1
ls_Drive = "Drive Does Not exist"
Case 2
ls_Drive = "Floppy driver"
Case 3
ls_Drive = "HardDisk driver"
Case 4
ls_Drive = "Network driver"
Case 5
ls_Drive = "CD-ROM driver"
Case 6
ls_Drive = "RAM driver"
End choose
Return ls_drive
6)、of_GetIPAddress(),获得本机IP地址。
return ole_1.object.localip
7)、of_GetKeyBoardType(),获得用户键盘种类。
return GetKeyboardType(0)
8)、of_GetLongInID(),获得登陆的用户名称。
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
#5
10)、of_GetMemory(),获得内存的使用情况。
ws_memory str_memory
GlobalMemoryStatus(str_memory)
dlength = str_memory.dlength
dmemoryload = str_memory.dmemoryload
dtotalphys = str_memory.dtotalphys
davailphys = str_memory.davailphys
dtotalpagefile = str_memory.dtotalpagefile
davailpagefile = str_memory.davailpagefile
dtotalvirtual = str_memory.dtotalvirtual
davailvirtual = str_memory.davailvirtual
return
11)、of_GetMHZ()。
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
14)、of_GetServicePack(),获得Windows NT的ServicePack版本。
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
15)、of_GetSystemDir(),获得系统目录。
ulong ll_length
string ls_username
ll_length=64
ls_username = space(64)
GetSystemDirectory(ls_username,ll_length)
return trim(ls_username)
16)、of_GetSystemInfo(),获得系统信息。
ws_info lstr_1
GetSystemInfo(lstr_1)
dwoemid = lstr_1.dwoemid
dwpagesize = lstr_1.dwpagesize
lpminappaddress = lstr_1.lpminappaddress
lpmaxappaddress = lstr_1.lpmaxappaddress
dwactiveprocessormask = lstr_1.dwactiveprocessormask
dwnumberofprocessors = lstr_1.dwnumberofprocessors
dwprocessortype = lstr_1.dwprocessortype
dwallocationgranularity = lstr_1.dwallocationgranularity
dwreserved = lstr_1.dwreserved
return lstr_1
17)、of_GetTempPath(),获得临时文件存放路径。
ulong ll_length
string ls_username
ll_length=64
ls_username = space(64)
GetTempPath(ll_length,ls_username)
return trim(ls_username)
18)、of_GetTickCount(),获得系统开机时间的长短。
ulong lul_runtime
integer li_Hour,li_Minute,li_Second
lul_runtime=GetTickCount()
li_Hour = (lul_runtime/1000)/3600
li_minute = (lul_runtime/1000 - 3600*li_hour)/60
li_second = lul_runtime/1000 - 3600*li_hour - li_minute*60
string ls_rtn
ls_rtn = string(li_hour)+" H "+string(li_minute)+" M "+string(li_second)+" S"
return ls_rtn
19)、of_GetVolumeInfo(),获得各个磁盘的卷标和文件系统。
string lpVolumeNameBuffer
string lpFileSystemNameBuffer
ulong nVolumeNameSize
ulong lpVolumeSerialNumber
ulong lpMaximumComponentLength
ulong lpFileSystemFlags
ulong nFileSystemNameSize
lpVolumeNameBuffer = space(64)
lpFileSystemNameBuffer = space(64)
nVolumeNameSize=len(lpVolumeNameBuffer)
nFileSystemNameSize=len(lpFileSystemNameBuffer)
GetVolumeInformation(as_drive,lpVolumeNameBuffer,nVolumeNameSize,&
lpVolumeSerialNumber,lpMaximumComponentLength,lpFileSystemFlags,lpFileSystemNameBuffer,
nFileSystemNameSize)
FileSystem= lpFileSystemNameBuffer
VolumeName = lpVolumeNameBuffer
VolumeSerialNumber=lpVolumeSerialNumber
MaxComponentLength = lpMaximumComponentLength
FileSystemFlags=lpFileSystemFlags
20)、of_GetWaveDevice(),获得系统的多媒体播放设备的个数。
integer ll_length
ll_length =waveOutGetNumDevs()
If ll_length>0 then
return ll_length
else
return 0
End if
21)、of_GetWindowDir(),获得操作系统的安装路径。
ulong ll_length
string ls_username
ll_length=64
ls_username = space(64)
GetWindowsDirectory(ls_username,ll_length)
return trim(ls_username)
22)、of_GetWindowMode()。
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
7、建立一个窗口,w_systeminfo,各个按钮的clicked事件如下:
1)、GetComputerName:
sle_computername.text = uo_1.of_ComputerName()
2)、GetCpuInformation:
uo_1.of_GetCpuInfo()
ddlb_cpuinfo.additem("Cpu ID: "+uo_1.cpuid)
ddlb_cpuinfo.additem("Cpu Provider: "+uo_1.cpuprovider)
ddlb_cpuinfo.selectitem(1)
3)、GetCpuStatus:
timer(0.1,parent)
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)
5)、GetLoginID:
sle_loginid.text = uo_1.of_GetLoginID()
6)、GetMacAddress:
string ls_macaddress
string ls_address[254]
ls_macaddress = uo_1.of_getmacaddress()
integer li_pos,i,li_start
i = 1
li_start = 1
li_pos = 1
do
li_pos = Pos(ls_macaddress,"|",li_start)
ls_address[i] = Mid(ls_macaddress,li_start,li_pos - li_start)
li_start = li_pos + 1
i++
loop until i>254 or ls_address[i - 1]=""
For i = 1 to 254
if ls_address[i] = "" Then exit
ddlb_macaddress.additem(ls_address[i])
End For
ddlb_macaddress.selectitem(1)
7)、GetMemory:
uo_1.of_getmemory()
ddlb_memory.Additem("dlength = " + string(uo_1.dlength))
ddlb_memory.Additem("dmemoryload = " + string(uo_1.dmemoryload)+"%")
ddlb_memory.Additem("dtotalphys = " + string(uo_1.dtotalphys))
ddlb_memory.Additem("davailphys = " + string(uo_1.davailphys))
ddlb_memory.Additem("dtotalpagefile = " + string(uo_1.dtotalpagefile))
ddlb_memory.Additem("davailpagefile = " + string(uo_1.davailpagefile))
ddlb_memory.Additem("dtotalvirtual = " + string(uo_1.dtotalvirtual))
ddlb_memory.Additem("davailvirtual = " + string(uo_1.davailvirtual))
ddlb_memory.selectitem(5)
8)、GetMhz:
sle_mhz.text = String(uo_1.of_GetMhz())
9)、GetOSVersion:
sle_osversion.text = uo_1.of_getosversion()
10)、GetServicePack:
sle_servicePack.text = uo_1.of_GetServicePack()
11)、GetSystemDir:
sle_systemdir.text = uo_1.of_getSystemDir()
12)、GetTempDir:
sle_tempdir.text = uo_1.of_gettemppath()
ws_memory str_memory
GlobalMemoryStatus(str_memory)
dlength = str_memory.dlength
dmemoryload = str_memory.dmemoryload
dtotalphys = str_memory.dtotalphys
davailphys = str_memory.davailphys
dtotalpagefile = str_memory.dtotalpagefile
davailpagefile = str_memory.davailpagefile
dtotalvirtual = str_memory.dtotalvirtual
davailvirtual = str_memory.davailvirtual
return
11)、of_GetMHZ()。
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
14)、of_GetServicePack(),获得Windows NT的ServicePack版本。
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
15)、of_GetSystemDir(),获得系统目录。
ulong ll_length
string ls_username
ll_length=64
ls_username = space(64)
GetSystemDirectory(ls_username,ll_length)
return trim(ls_username)
16)、of_GetSystemInfo(),获得系统信息。
ws_info lstr_1
GetSystemInfo(lstr_1)
dwoemid = lstr_1.dwoemid
dwpagesize = lstr_1.dwpagesize
lpminappaddress = lstr_1.lpminappaddress
lpmaxappaddress = lstr_1.lpmaxappaddress
dwactiveprocessormask = lstr_1.dwactiveprocessormask
dwnumberofprocessors = lstr_1.dwnumberofprocessors
dwprocessortype = lstr_1.dwprocessortype
dwallocationgranularity = lstr_1.dwallocationgranularity
dwreserved = lstr_1.dwreserved
return lstr_1
17)、of_GetTempPath(),获得临时文件存放路径。
ulong ll_length
string ls_username
ll_length=64
ls_username = space(64)
GetTempPath(ll_length,ls_username)
return trim(ls_username)
18)、of_GetTickCount(),获得系统开机时间的长短。
ulong lul_runtime
integer li_Hour,li_Minute,li_Second
lul_runtime=GetTickCount()
li_Hour = (lul_runtime/1000)/3600
li_minute = (lul_runtime/1000 - 3600*li_hour)/60
li_second = lul_runtime/1000 - 3600*li_hour - li_minute*60
string ls_rtn
ls_rtn = string(li_hour)+" H "+string(li_minute)+" M "+string(li_second)+" S"
return ls_rtn
19)、of_GetVolumeInfo(),获得各个磁盘的卷标和文件系统。
string lpVolumeNameBuffer
string lpFileSystemNameBuffer
ulong nVolumeNameSize
ulong lpVolumeSerialNumber
ulong lpMaximumComponentLength
ulong lpFileSystemFlags
ulong nFileSystemNameSize
lpVolumeNameBuffer = space(64)
lpFileSystemNameBuffer = space(64)
nVolumeNameSize=len(lpVolumeNameBuffer)
nFileSystemNameSize=len(lpFileSystemNameBuffer)
GetVolumeInformation(as_drive,lpVolumeNameBuffer,nVolumeNameSize,&
lpVolumeSerialNumber,lpMaximumComponentLength,lpFileSystemFlags,lpFileSystemNameBuffer,
nFileSystemNameSize)
FileSystem= lpFileSystemNameBuffer
VolumeName = lpVolumeNameBuffer
VolumeSerialNumber=lpVolumeSerialNumber
MaxComponentLength = lpMaximumComponentLength
FileSystemFlags=lpFileSystemFlags
20)、of_GetWaveDevice(),获得系统的多媒体播放设备的个数。
integer ll_length
ll_length =waveOutGetNumDevs()
If ll_length>0 then
return ll_length
else
return 0
End if
21)、of_GetWindowDir(),获得操作系统的安装路径。
ulong ll_length
string ls_username
ll_length=64
ls_username = space(64)
GetWindowsDirectory(ls_username,ll_length)
return trim(ls_username)
22)、of_GetWindowMode()。
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
7、建立一个窗口,w_systeminfo,各个按钮的clicked事件如下:
1)、GetComputerName:
sle_computername.text = uo_1.of_ComputerName()
2)、GetCpuInformation:
uo_1.of_GetCpuInfo()
ddlb_cpuinfo.additem("Cpu ID: "+uo_1.cpuid)
ddlb_cpuinfo.additem("Cpu Provider: "+uo_1.cpuprovider)
ddlb_cpuinfo.selectitem(1)
3)、GetCpuStatus:
timer(0.1,parent)
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)
5)、GetLoginID:
sle_loginid.text = uo_1.of_GetLoginID()
6)、GetMacAddress:
string ls_macaddress
string ls_address[254]
ls_macaddress = uo_1.of_getmacaddress()
integer li_pos,i,li_start
i = 1
li_start = 1
li_pos = 1
do
li_pos = Pos(ls_macaddress,"|",li_start)
ls_address[i] = Mid(ls_macaddress,li_start,li_pos - li_start)
li_start = li_pos + 1
i++
loop until i>254 or ls_address[i - 1]=""
For i = 1 to 254
if ls_address[i] = "" Then exit
ddlb_macaddress.additem(ls_address[i])
End For
ddlb_macaddress.selectitem(1)
7)、GetMemory:
uo_1.of_getmemory()
ddlb_memory.Additem("dlength = " + string(uo_1.dlength))
ddlb_memory.Additem("dmemoryload = " + string(uo_1.dmemoryload)+"%")
ddlb_memory.Additem("dtotalphys = " + string(uo_1.dtotalphys))
ddlb_memory.Additem("davailphys = " + string(uo_1.davailphys))
ddlb_memory.Additem("dtotalpagefile = " + string(uo_1.dtotalpagefile))
ddlb_memory.Additem("davailpagefile = " + string(uo_1.davailpagefile))
ddlb_memory.Additem("dtotalvirtual = " + string(uo_1.dtotalvirtual))
ddlb_memory.Additem("davailvirtual = " + string(uo_1.davailvirtual))
ddlb_memory.selectitem(5)
8)、GetMhz:
sle_mhz.text = String(uo_1.of_GetMhz())
9)、GetOSVersion:
sle_osversion.text = uo_1.of_getosversion()
10)、GetServicePack:
sle_servicePack.text = uo_1.of_GetServicePack()
11)、GetSystemDir:
sle_systemdir.text = uo_1.of_getSystemDir()
12)、GetTempDir:
sle_tempdir.text = uo_1.of_gettemppath()
#6
13)、GetSystemInfo:
uo_1.of_GetsystemInfo()
ddlb_systeminfo.additem("OemID = "+string(uo_1.dwoemid))
ddlb_systeminfo.additem("PageSize = "+string(uo_1.dwPagesize))
ddlb_systeminfo.additem("MinAppAddress = "+string(uo_1.lpminappaddress))
ddlb_systeminfo.additem("MaxAppAddress = "+string(uo_1.lpmaxappaddress))
ddlb_systeminfo.additem("ActiveProcessorMask = "+string(uo_1.dwactiveprocessormask))
ddlb_systeminfo.additem("NumberofProcessors = "+string(uo_1.dwnumberofprocessors))
ddlb_systeminfo.additem("ProcessorType = "+string(uo_1.dwprocessortype))
ddlb_systeminfo.additem("AllocationGranularity = "+string(uo_1.dwallocationgranularity))
ddlb_systeminfo.additem("Reserved = "+string(uo_1.dwreserved))
ddlb_systeminfo.selectitem(5)
14)、GetTickCount:
sle_tickcount.text = uo_1.of_GetTickCount()
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()
17)、GetWindowDir:
sle_windowdir.text = uo_1.of_getwindowdir()
18)、GetWaveDevice:
sle_wavedevice.text = string(uo_1.of_getwavedevice())
19)、GetIPAddress:
sle_ipaddress.text = uo_1.of_getipaddress()
20)、GetNetCard:
sle_netcard.text = uo_1.of_getnetcard()
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、效果图:
uo_1.of_GetsystemInfo()
ddlb_systeminfo.additem("OemID = "+string(uo_1.dwoemid))
ddlb_systeminfo.additem("PageSize = "+string(uo_1.dwPagesize))
ddlb_systeminfo.additem("MinAppAddress = "+string(uo_1.lpminappaddress))
ddlb_systeminfo.additem("MaxAppAddress = "+string(uo_1.lpmaxappaddress))
ddlb_systeminfo.additem("ActiveProcessorMask = "+string(uo_1.dwactiveprocessormask))
ddlb_systeminfo.additem("NumberofProcessors = "+string(uo_1.dwnumberofprocessors))
ddlb_systeminfo.additem("ProcessorType = "+string(uo_1.dwprocessortype))
ddlb_systeminfo.additem("AllocationGranularity = "+string(uo_1.dwallocationgranularity))
ddlb_systeminfo.additem("Reserved = "+string(uo_1.dwreserved))
ddlb_systeminfo.selectitem(5)
14)、GetTickCount:
sle_tickcount.text = uo_1.of_GetTickCount()
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()
17)、GetWindowDir:
sle_windowdir.text = uo_1.of_getwindowdir()
18)、GetWaveDevice:
sle_wavedevice.text = string(uo_1.of_getwavedevice())
19)、GetIPAddress:
sle_ipaddress.text = uo_1.of_getipaddress()
20)、GetNetCard:
sle_netcard.text = uo_1.of_getnetcard()
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、效果图:
#7
看这个例子
http://www.topwizprogramming.com/freecode/adapter.zip
http://www.topwizprogramming.com/freecode/adapter.zip
#8
感谢 大乌龟 && AFIC
预祝大家元宵节快乐!
预祝大家元宵节快乐!
#1
PBPB获取没有弄过,帮顶!
#2
是的,可以的。
声明win32 API函数:
function int WSAStartup( uint UIVersionRequested, ref s_WSAData lpWSAData ) library "wsock32.dll"
function int WSACleanup() library "wsock32.dll"
function int WSAGetLastError ( ) library "wsock32.dll"
function int gethostname ( ref string name, int namelen ) library "wsock32.dll"
function string GetHost(string lpszhost, ref blob lpszaddress ) library "pbws32.dll"
使用方法:
s_wsadata l_WSAData
string ls_HostName = space(128)
string ls_IpAddress
int li_version = 257
blob{4} lb_hostaddress
IF wsastartup ( li_version, l_WSAData ) = 0 THEN
IF gethostname ( ls_HostName, len(ls_HostName) ) < 0 THEN
messagebox("GetHostName",WSAGetLastError())
ELSE
GetHost(ls_HostName, lb_HostAddress)
ls_IpAddress = string(asc(string(blobmid(lb_HostAddress,1,1))),"000") + "."
ls_IpAddress += string(asc(string(blobmid(lb_HostAddress,2,1))),"000") + "."
ls_IpAddress += string(asc(string(blobmid(lb_HostAddress,3,1))),"000") + "."
ls_IpAddress += string(asc(string(blobmid(lb_HostAddress,4,1))),"000")
END IF
WSACleanup()
ELSE
messagebox("GetHostName",WSAGetLastError())
END IF
sle_1.text=ls_hostname
sle_2.text=ls_ipaddress
声明win32 API函数:
function int WSAStartup( uint UIVersionRequested, ref s_WSAData lpWSAData ) library "wsock32.dll"
function int WSACleanup() library "wsock32.dll"
function int WSAGetLastError ( ) library "wsock32.dll"
function int gethostname ( ref string name, int namelen ) library "wsock32.dll"
function string GetHost(string lpszhost, ref blob lpszaddress ) library "pbws32.dll"
使用方法:
s_wsadata l_WSAData
string ls_HostName = space(128)
string ls_IpAddress
int li_version = 257
blob{4} lb_hostaddress
IF wsastartup ( li_version, l_WSAData ) = 0 THEN
IF gethostname ( ls_HostName, len(ls_HostName) ) < 0 THEN
messagebox("GetHostName",WSAGetLastError())
ELSE
GetHost(ls_HostName, lb_HostAddress)
ls_IpAddress = string(asc(string(blobmid(lb_HostAddress,1,1))),"000") + "."
ls_IpAddress += string(asc(string(blobmid(lb_HostAddress,2,1))),"000") + "."
ls_IpAddress += string(asc(string(blobmid(lb_HostAddress,3,1))),"000") + "."
ls_IpAddress += string(asc(string(blobmid(lb_HostAddress,4,1))),"000")
END IF
WSACleanup()
ELSE
messagebox("GetHostName",WSAGetLastError())
END IF
sle_1.text=ls_hostname
sle_2.text=ls_ipaddress
#3
楼上写的是获取ip地址不是mac地址....
#4
获得系统基本信息
(独孤求败二零零四年二月十二日整理于深圳市南山区)
当一个应用程序在工作时,会不可避免地和操作系统发生数据交换,虽然在PB中提供了Environment对象来获得系统的一些信息,然而这些信息往往是不够的,比如CPU、本机IP地址等,这些内容只有用Windows API来获得了。
1、建立一个工作空间(workspace),取名为:systeminfo。
2、建立一个应用(application),取名为:systeminfo。
3、创建用户对象u_sysinfo,并添加Microsoft Winsock OCX控件。
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"
6、用户对象级函数
1)、of_GetComputerName(),获得计算机的标识(即计算机名)。
ulong ll_comsize
ulong ll_flag
ll_comsize = 256
string ls_computerName
//获得计算机的名称
ll_flag = GetComputerName(ls_computerName,ll_comsize)
If ll_flag<> 1 then
return "Get Computer Failure"
else
return ls_computerName
End if
2)、of_GetCpuInfo(),获得CPU一些基本信息。
ws_cpuinfo lstr_cpu
string ls_temp
RegistryGet("HKEY_LOCAL_MACHINE\Hardware\Description\System\CentralProcessor\0","Identifier",RegString!,ls_temp)
lstr_cpu.cpuid = ls_temp
cpuid = ls_temp
RegistryGet("HKEY_LOCAL_MACHINE\Hardware\Description\System\CentralProcessor\0","VendorIdentifier",RegString!,ls_temp)
lstr_cpu.cpuprovider = ls_temp
cpuprovider = ls_temp
3)、of_GetCpuStatus(),获得CPU当前的使用频率,是从0%到100%之间的一个常数。
ulong ls_username,lpcbData,lpType
lpcbData = 4
lpType = 4
ulong phkResult
ls_username = 0
string lbSubkey
long lpData
lbSubkey = "PerfStats\StatData"
ls_username = RegOpenKey(16*16*16*16*16*16*16*8+6,lbSubKey,phkResult)//The first parameters is HKEY_DYN_DATA = &80000006(HANDLE)
string lpValueName
lpValueName = "KERNEL\CPUUsage"
ls_username = RegQueryValueEx(phkResult,lpValueName,0,lpType,lpData,lpcbData)
ls_username = RegCloseKey(phkResult)
return lpdata
4)、of_GetDiskVolume(),获得磁盘空间大小。
ulong ll_MBFree
ulong ll_MBTotal
ulong ll_sectorspercluster // Sectors/Cluster
ulong ll_bytespersector // Bytes/Sector
ulong ll_numberoffreeclusters // Number of Free Clusters
ulong ll_toalnumberofclusters // Total Number of Clusters
GetDiskFreeSpace(as_driver, ll_sectorspercluster, ll_bytespersector,ll_numberoffreeclusters,
ll_toalnumberofclusters)
sectorspercluster=ll_sectorspercluster
bytespersector=ll_bytespersector
numberoffreeclusters=ll_numberoffreeclusters
totalnumberofclusters=ll_toalnumberofclusters
mbfree = (ll_sectorspercluster * ll_bytespersector * (ll_numberoffreeclusters / 1024)) / 1024
mbtotal = (ll_sectorspercluster * ll_bytespersector * (ll_toalnumberofclusters / 1024)) / 1024
5)、of_GetDriverType(),获得各个磁盘的种类。
ulong ul_drivetype
string ls_drive
ul_drivetype = GetDriveType(a_drivename)
choose case ul_drivetype
case 0
ls_Drive = "Unknown Driver"
Case 1
ls_Drive = "Drive Does Not exist"
Case 2
ls_Drive = "Floppy driver"
Case 3
ls_Drive = "HardDisk driver"
Case 4
ls_Drive = "Network driver"
Case 5
ls_Drive = "CD-ROM driver"
Case 6
ls_Drive = "RAM driver"
End choose
Return ls_drive
6)、of_GetIPAddress(),获得本机IP地址。
return ole_1.object.localip
7)、of_GetKeyBoardType(),获得用户键盘种类。
return GetKeyboardType(0)
8)、of_GetLongInID(),获得登陆的用户名称。
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
#5
10)、of_GetMemory(),获得内存的使用情况。
ws_memory str_memory
GlobalMemoryStatus(str_memory)
dlength = str_memory.dlength
dmemoryload = str_memory.dmemoryload
dtotalphys = str_memory.dtotalphys
davailphys = str_memory.davailphys
dtotalpagefile = str_memory.dtotalpagefile
davailpagefile = str_memory.davailpagefile
dtotalvirtual = str_memory.dtotalvirtual
davailvirtual = str_memory.davailvirtual
return
11)、of_GetMHZ()。
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
14)、of_GetServicePack(),获得Windows NT的ServicePack版本。
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
15)、of_GetSystemDir(),获得系统目录。
ulong ll_length
string ls_username
ll_length=64
ls_username = space(64)
GetSystemDirectory(ls_username,ll_length)
return trim(ls_username)
16)、of_GetSystemInfo(),获得系统信息。
ws_info lstr_1
GetSystemInfo(lstr_1)
dwoemid = lstr_1.dwoemid
dwpagesize = lstr_1.dwpagesize
lpminappaddress = lstr_1.lpminappaddress
lpmaxappaddress = lstr_1.lpmaxappaddress
dwactiveprocessormask = lstr_1.dwactiveprocessormask
dwnumberofprocessors = lstr_1.dwnumberofprocessors
dwprocessortype = lstr_1.dwprocessortype
dwallocationgranularity = lstr_1.dwallocationgranularity
dwreserved = lstr_1.dwreserved
return lstr_1
17)、of_GetTempPath(),获得临时文件存放路径。
ulong ll_length
string ls_username
ll_length=64
ls_username = space(64)
GetTempPath(ll_length,ls_username)
return trim(ls_username)
18)、of_GetTickCount(),获得系统开机时间的长短。
ulong lul_runtime
integer li_Hour,li_Minute,li_Second
lul_runtime=GetTickCount()
li_Hour = (lul_runtime/1000)/3600
li_minute = (lul_runtime/1000 - 3600*li_hour)/60
li_second = lul_runtime/1000 - 3600*li_hour - li_minute*60
string ls_rtn
ls_rtn = string(li_hour)+" H "+string(li_minute)+" M "+string(li_second)+" S"
return ls_rtn
19)、of_GetVolumeInfo(),获得各个磁盘的卷标和文件系统。
string lpVolumeNameBuffer
string lpFileSystemNameBuffer
ulong nVolumeNameSize
ulong lpVolumeSerialNumber
ulong lpMaximumComponentLength
ulong lpFileSystemFlags
ulong nFileSystemNameSize
lpVolumeNameBuffer = space(64)
lpFileSystemNameBuffer = space(64)
nVolumeNameSize=len(lpVolumeNameBuffer)
nFileSystemNameSize=len(lpFileSystemNameBuffer)
GetVolumeInformation(as_drive,lpVolumeNameBuffer,nVolumeNameSize,&
lpVolumeSerialNumber,lpMaximumComponentLength,lpFileSystemFlags,lpFileSystemNameBuffer,
nFileSystemNameSize)
FileSystem= lpFileSystemNameBuffer
VolumeName = lpVolumeNameBuffer
VolumeSerialNumber=lpVolumeSerialNumber
MaxComponentLength = lpMaximumComponentLength
FileSystemFlags=lpFileSystemFlags
20)、of_GetWaveDevice(),获得系统的多媒体播放设备的个数。
integer ll_length
ll_length =waveOutGetNumDevs()
If ll_length>0 then
return ll_length
else
return 0
End if
21)、of_GetWindowDir(),获得操作系统的安装路径。
ulong ll_length
string ls_username
ll_length=64
ls_username = space(64)
GetWindowsDirectory(ls_username,ll_length)
return trim(ls_username)
22)、of_GetWindowMode()。
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
7、建立一个窗口,w_systeminfo,各个按钮的clicked事件如下:
1)、GetComputerName:
sle_computername.text = uo_1.of_ComputerName()
2)、GetCpuInformation:
uo_1.of_GetCpuInfo()
ddlb_cpuinfo.additem("Cpu ID: "+uo_1.cpuid)
ddlb_cpuinfo.additem("Cpu Provider: "+uo_1.cpuprovider)
ddlb_cpuinfo.selectitem(1)
3)、GetCpuStatus:
timer(0.1,parent)
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)
5)、GetLoginID:
sle_loginid.text = uo_1.of_GetLoginID()
6)、GetMacAddress:
string ls_macaddress
string ls_address[254]
ls_macaddress = uo_1.of_getmacaddress()
integer li_pos,i,li_start
i = 1
li_start = 1
li_pos = 1
do
li_pos = Pos(ls_macaddress,"|",li_start)
ls_address[i] = Mid(ls_macaddress,li_start,li_pos - li_start)
li_start = li_pos + 1
i++
loop until i>254 or ls_address[i - 1]=""
For i = 1 to 254
if ls_address[i] = "" Then exit
ddlb_macaddress.additem(ls_address[i])
End For
ddlb_macaddress.selectitem(1)
7)、GetMemory:
uo_1.of_getmemory()
ddlb_memory.Additem("dlength = " + string(uo_1.dlength))
ddlb_memory.Additem("dmemoryload = " + string(uo_1.dmemoryload)+"%")
ddlb_memory.Additem("dtotalphys = " + string(uo_1.dtotalphys))
ddlb_memory.Additem("davailphys = " + string(uo_1.davailphys))
ddlb_memory.Additem("dtotalpagefile = " + string(uo_1.dtotalpagefile))
ddlb_memory.Additem("davailpagefile = " + string(uo_1.davailpagefile))
ddlb_memory.Additem("dtotalvirtual = " + string(uo_1.dtotalvirtual))
ddlb_memory.Additem("davailvirtual = " + string(uo_1.davailvirtual))
ddlb_memory.selectitem(5)
8)、GetMhz:
sle_mhz.text = String(uo_1.of_GetMhz())
9)、GetOSVersion:
sle_osversion.text = uo_1.of_getosversion()
10)、GetServicePack:
sle_servicePack.text = uo_1.of_GetServicePack()
11)、GetSystemDir:
sle_systemdir.text = uo_1.of_getSystemDir()
12)、GetTempDir:
sle_tempdir.text = uo_1.of_gettemppath()
ws_memory str_memory
GlobalMemoryStatus(str_memory)
dlength = str_memory.dlength
dmemoryload = str_memory.dmemoryload
dtotalphys = str_memory.dtotalphys
davailphys = str_memory.davailphys
dtotalpagefile = str_memory.dtotalpagefile
davailpagefile = str_memory.davailpagefile
dtotalvirtual = str_memory.dtotalvirtual
davailvirtual = str_memory.davailvirtual
return
11)、of_GetMHZ()。
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
14)、of_GetServicePack(),获得Windows NT的ServicePack版本。
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
15)、of_GetSystemDir(),获得系统目录。
ulong ll_length
string ls_username
ll_length=64
ls_username = space(64)
GetSystemDirectory(ls_username,ll_length)
return trim(ls_username)
16)、of_GetSystemInfo(),获得系统信息。
ws_info lstr_1
GetSystemInfo(lstr_1)
dwoemid = lstr_1.dwoemid
dwpagesize = lstr_1.dwpagesize
lpminappaddress = lstr_1.lpminappaddress
lpmaxappaddress = lstr_1.lpmaxappaddress
dwactiveprocessormask = lstr_1.dwactiveprocessormask
dwnumberofprocessors = lstr_1.dwnumberofprocessors
dwprocessortype = lstr_1.dwprocessortype
dwallocationgranularity = lstr_1.dwallocationgranularity
dwreserved = lstr_1.dwreserved
return lstr_1
17)、of_GetTempPath(),获得临时文件存放路径。
ulong ll_length
string ls_username
ll_length=64
ls_username = space(64)
GetTempPath(ll_length,ls_username)
return trim(ls_username)
18)、of_GetTickCount(),获得系统开机时间的长短。
ulong lul_runtime
integer li_Hour,li_Minute,li_Second
lul_runtime=GetTickCount()
li_Hour = (lul_runtime/1000)/3600
li_minute = (lul_runtime/1000 - 3600*li_hour)/60
li_second = lul_runtime/1000 - 3600*li_hour - li_minute*60
string ls_rtn
ls_rtn = string(li_hour)+" H "+string(li_minute)+" M "+string(li_second)+" S"
return ls_rtn
19)、of_GetVolumeInfo(),获得各个磁盘的卷标和文件系统。
string lpVolumeNameBuffer
string lpFileSystemNameBuffer
ulong nVolumeNameSize
ulong lpVolumeSerialNumber
ulong lpMaximumComponentLength
ulong lpFileSystemFlags
ulong nFileSystemNameSize
lpVolumeNameBuffer = space(64)
lpFileSystemNameBuffer = space(64)
nVolumeNameSize=len(lpVolumeNameBuffer)
nFileSystemNameSize=len(lpFileSystemNameBuffer)
GetVolumeInformation(as_drive,lpVolumeNameBuffer,nVolumeNameSize,&
lpVolumeSerialNumber,lpMaximumComponentLength,lpFileSystemFlags,lpFileSystemNameBuffer,
nFileSystemNameSize)
FileSystem= lpFileSystemNameBuffer
VolumeName = lpVolumeNameBuffer
VolumeSerialNumber=lpVolumeSerialNumber
MaxComponentLength = lpMaximumComponentLength
FileSystemFlags=lpFileSystemFlags
20)、of_GetWaveDevice(),获得系统的多媒体播放设备的个数。
integer ll_length
ll_length =waveOutGetNumDevs()
If ll_length>0 then
return ll_length
else
return 0
End if
21)、of_GetWindowDir(),获得操作系统的安装路径。
ulong ll_length
string ls_username
ll_length=64
ls_username = space(64)
GetWindowsDirectory(ls_username,ll_length)
return trim(ls_username)
22)、of_GetWindowMode()。
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
7、建立一个窗口,w_systeminfo,各个按钮的clicked事件如下:
1)、GetComputerName:
sle_computername.text = uo_1.of_ComputerName()
2)、GetCpuInformation:
uo_1.of_GetCpuInfo()
ddlb_cpuinfo.additem("Cpu ID: "+uo_1.cpuid)
ddlb_cpuinfo.additem("Cpu Provider: "+uo_1.cpuprovider)
ddlb_cpuinfo.selectitem(1)
3)、GetCpuStatus:
timer(0.1,parent)
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)
5)、GetLoginID:
sle_loginid.text = uo_1.of_GetLoginID()
6)、GetMacAddress:
string ls_macaddress
string ls_address[254]
ls_macaddress = uo_1.of_getmacaddress()
integer li_pos,i,li_start
i = 1
li_start = 1
li_pos = 1
do
li_pos = Pos(ls_macaddress,"|",li_start)
ls_address[i] = Mid(ls_macaddress,li_start,li_pos - li_start)
li_start = li_pos + 1
i++
loop until i>254 or ls_address[i - 1]=""
For i = 1 to 254
if ls_address[i] = "" Then exit
ddlb_macaddress.additem(ls_address[i])
End For
ddlb_macaddress.selectitem(1)
7)、GetMemory:
uo_1.of_getmemory()
ddlb_memory.Additem("dlength = " + string(uo_1.dlength))
ddlb_memory.Additem("dmemoryload = " + string(uo_1.dmemoryload)+"%")
ddlb_memory.Additem("dtotalphys = " + string(uo_1.dtotalphys))
ddlb_memory.Additem("davailphys = " + string(uo_1.davailphys))
ddlb_memory.Additem("dtotalpagefile = " + string(uo_1.dtotalpagefile))
ddlb_memory.Additem("davailpagefile = " + string(uo_1.davailpagefile))
ddlb_memory.Additem("dtotalvirtual = " + string(uo_1.dtotalvirtual))
ddlb_memory.Additem("davailvirtual = " + string(uo_1.davailvirtual))
ddlb_memory.selectitem(5)
8)、GetMhz:
sle_mhz.text = String(uo_1.of_GetMhz())
9)、GetOSVersion:
sle_osversion.text = uo_1.of_getosversion()
10)、GetServicePack:
sle_servicePack.text = uo_1.of_GetServicePack()
11)、GetSystemDir:
sle_systemdir.text = uo_1.of_getSystemDir()
12)、GetTempDir:
sle_tempdir.text = uo_1.of_gettemppath()
#6
13)、GetSystemInfo:
uo_1.of_GetsystemInfo()
ddlb_systeminfo.additem("OemID = "+string(uo_1.dwoemid))
ddlb_systeminfo.additem("PageSize = "+string(uo_1.dwPagesize))
ddlb_systeminfo.additem("MinAppAddress = "+string(uo_1.lpminappaddress))
ddlb_systeminfo.additem("MaxAppAddress = "+string(uo_1.lpmaxappaddress))
ddlb_systeminfo.additem("ActiveProcessorMask = "+string(uo_1.dwactiveprocessormask))
ddlb_systeminfo.additem("NumberofProcessors = "+string(uo_1.dwnumberofprocessors))
ddlb_systeminfo.additem("ProcessorType = "+string(uo_1.dwprocessortype))
ddlb_systeminfo.additem("AllocationGranularity = "+string(uo_1.dwallocationgranularity))
ddlb_systeminfo.additem("Reserved = "+string(uo_1.dwreserved))
ddlb_systeminfo.selectitem(5)
14)、GetTickCount:
sle_tickcount.text = uo_1.of_GetTickCount()
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()
17)、GetWindowDir:
sle_windowdir.text = uo_1.of_getwindowdir()
18)、GetWaveDevice:
sle_wavedevice.text = string(uo_1.of_getwavedevice())
19)、GetIPAddress:
sle_ipaddress.text = uo_1.of_getipaddress()
20)、GetNetCard:
sle_netcard.text = uo_1.of_getnetcard()
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、效果图:
uo_1.of_GetsystemInfo()
ddlb_systeminfo.additem("OemID = "+string(uo_1.dwoemid))
ddlb_systeminfo.additem("PageSize = "+string(uo_1.dwPagesize))
ddlb_systeminfo.additem("MinAppAddress = "+string(uo_1.lpminappaddress))
ddlb_systeminfo.additem("MaxAppAddress = "+string(uo_1.lpmaxappaddress))
ddlb_systeminfo.additem("ActiveProcessorMask = "+string(uo_1.dwactiveprocessormask))
ddlb_systeminfo.additem("NumberofProcessors = "+string(uo_1.dwnumberofprocessors))
ddlb_systeminfo.additem("ProcessorType = "+string(uo_1.dwprocessortype))
ddlb_systeminfo.additem("AllocationGranularity = "+string(uo_1.dwallocationgranularity))
ddlb_systeminfo.additem("Reserved = "+string(uo_1.dwreserved))
ddlb_systeminfo.selectitem(5)
14)、GetTickCount:
sle_tickcount.text = uo_1.of_GetTickCount()
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()
17)、GetWindowDir:
sle_windowdir.text = uo_1.of_getwindowdir()
18)、GetWaveDevice:
sle_wavedevice.text = string(uo_1.of_getwavedevice())
19)、GetIPAddress:
sle_ipaddress.text = uo_1.of_getipaddress()
20)、GetNetCard:
sle_netcard.text = uo_1.of_getnetcard()
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、效果图:
#7
看这个例子
http://www.topwizprogramming.com/freecode/adapter.zip
http://www.topwizprogramming.com/freecode/adapter.zip
#8
感谢 大乌龟 && AFIC
预祝大家元宵节快乐!
预祝大家元宵节快乐!