BTemplates.com

Diberdayakan oleh Blogger.

Pages

Pages - Menu

Popular Posts

Selasa, 18 Desember 2007

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

0 komentar:

Posting Komentar