Menentukan Drive Space dengan Visual Foxpro
&& FUNCTION DriveSpace
&& PARAMETERS _cDrive, _Mode,_Mess,_DriveType
&& Untuk Menentukan Sisa Drive Space, Kapasita Drive Space atau Ruang Simpan yang telah terpakai
&& PARAMETERS _cDrive : Drive yang akan diperiksa kapasitasnya
&& _Mode : 0 Disk Capacity
&& 1 Free Space
&& 2 Usage Space
&& _Mess, Character Disk Size : BYTE/KB/MB/GB
&& _DriveType :==> Type Drive :
&& 1 No type
&& 2 Floppy disk, flash disk juga masuk disini
&& 3 Hard disk
&& 4 Removable drive or network drive
&& 5 CD-ROM
&& 6 RAM disk1
FUNCTION DriveSpace
PARAMETERS _cDrive, _Mode,_Mess,_DriveType
IF VARTYPE(_DriveType)="N"
_DriveType=ALLTRIM(STR(INT(_DriveType)))
&& Dianggap FixedDrive
ENDIF
IF VARTYPE(_DriveType)<>"C"
_DriveType="3"
&& Dianggap FixedDrive
ENDIF
IF !(_DriveType$"1,2,3,4,5,6")
_DriveType="3"
ENDIF
IF VARTYPE(_cDrive)<>"C"
_cDrive=LEFT(SET("DEFAULT"),1)
ENDIF
IF VARTYPE(_Mode)="C"
_Mode=INT(VAL(_Mode))
ENDIF
IF VARTYPE(_Mode)<>"N"
_Mode=0
ENDIF
DO CASE
CASE _Mode=0
_Mode=0
CASE _Mode=1
_Mode=1
CASE _Mode=2
_Mode=2
OTHERWISE
_Mode=0
ENDCASE
IF VARTYPE(_Mess)<>"C"
_Mess="GB"
ENDIF
DO CASE
CASE UPPER(_Mess)="B"
_Mess="Byte"
_nDiv=1
CASE UPPER(_Mess)="KB"
_Mess="KB"
_nDiv=1*1024
CASE UPPER(_Mess)="M"
_Mess="MB"
_nDiv=1*1024*1024
CASE UPPER(_Mess)="GB"
_Mess="GB"
_nDiv=1*1024*1024*1024
OTHERWISE
_Mess="GB"
_nDiv=1*1024*1024*1024
ENDCASE
_objWMIService=GetObject("winmgmts:" +;
"{impersonationLevel=impersonate}!\\" +;
GETENV("computername")+"\root\cimv2")
_colDisks=_objWMIService.ExecQuery;
("Select * from Win32_LogicalDisk Where DriveType = "+_DriveType)
&& 3 disini merujuk pada Fixed Disk
&& Jika ingin yang flash disk, silakan 3 diganti 2 sbb:
&&_colDisks=_objWMIService.ExecQuery;
&& ("Select * from Win32_LogicalDisk Where DriveType = 2")
_iCek=0
FOR EACH objDisk IN _colDisks
IF objDisk.DeviceID=UPPER(_cDrive)+":"
_cFreeSpace=objDisk.FreeSpace
_cTotalSpace=objDisk.Size
_iCek=1
ENDIF
ENDFOR
IF _iCek=0
*=MESSAGEBOX("Drive "+_cDrive+": "+"not found!",16,"Invalid Drive",1000)
_cFreeSpace=-1
_cTotalSpace=-1
_cTotalUsage=-1
ELSE
_cFreeSpace=VAL(_cFreeSpace)/_nDiv
_cTotalSpace=VAL(_cTotalSpace)/_nDiv
_cTotalUsage=_cTotalSpace-_cFreeSpace
ENDIF
* Untuk Test :
* ? _cFreeSpace
* ? _cTotalSpace
* ? _cTotalUsage
RETURN IIF(_Mode=0,_cTotalSpace,IIF(_Mode=1,_cFreeSpace,_cTotalUsage))
* ? _cFreeSpace
* ? _cTotalSpace
* ? _cTotalUsage
RETURN IIF(_Mode=0,_cTotalSpace,IIF(_Mode=1,_cFreeSpace,_cTotalUsage))
0 komentar:
Posting Komentar