如何獲取本機網卡的物理地址


用PB如何獲取本機網卡的物理地址?
網上介紹說調用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

#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()

 

#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、效果圖:
 

#7


看這個例子
http://www.topwizprogramming.com/freecode/adapter.zip

#8


感謝 大烏龜 && AFIC   
預祝大家元宵節快樂!

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com