안녕하세요. 어떨결에 MS에서 API를 쳤는데 나온 함수를 소개할까해요.
이 함수가 없는것같아서. 알고보니 간단하더군요! 해석하기가 쉬웠어요! 그래서 올려보아요.
폼 디자인은 이렇게 해주세요. 텍스트박스 1개, 커맨드박스 1개, 라벨 3개
이름은 아무넣게나 해도 되요. 저는 안바꾸는편이라..
자 코딩을 해볼까요?
일단 API를 쓸려면 API를 선언해야겠죠?
Private Declare Function GetDiskFreeSpaceEx Lib "kernel32" Alias "GetDiskFreeSpaceExA" (ByVal lpDirectoryName As String, lpFreeBytesAvailableToCaller As Currency, lpTotalNumberOfBytes As Currency, lpTotalNumberOfFreeBytes As Currency) As Long |
자 해석을 해봅시다.
ByVal lpDirectoryName As String 디렉토리 파일을 참조합니다.
'--바람개비님 제보. GetDiskFreeSpaceEx을 정확하게, 인자값을 를 지적해주셨어요. 감사합니다.
Parameters
lpDirectoryName [in]
- 알고자 하는 저장매체의 디렉토리 이름
- NULL 이면 Object Stroe 의 공간 정보를 가져온다.
lpFreeBytesAvailableToCaller [out]
- 남은 저장공간 용량
lpTotalNumberOfBytes [out]
- 전체 저장공간 용량
lpTotalNumberBytesOfFreeBytes [out]
- 전체 저장공간에서 남은 저장공간 용량
- NULL
Retrun Value
- 0 이면 실패 ( GetLastError() 로 실패 확인 가능 )
- 0 이 아니면 성공
출처 : http://blog.naver.com/pkkkkkk/80054731958
'----------------------------------------------------------------------------------------
Private Sub Form_Load()
|
자 폼 로드시, 시스템 드라이브를 참조하게 만들려면.
Text1 = Environ("systemdrive") & "\" 와 같이 코딩해요.
Environ은 환경 변수를 의미해요. 내장함수지요. 자 잠시 Environ 함수를 알아보아요
Text1 = Environ("HomeDrive") & "\"
Text1 = Environ("SystemDrive") & "\"
Text1 = Environ("AppData") & "\" |
이렇게 코딩을 하면 어떤 결과물이 나올까요?
Text1은 홈드라브가 나오겠죠. Ex) C:\ , D:\
전 Window7을 D:\에 깔았으니, D:\가 나올꺼예요.
Text2 역시, 시스템 드라이브를 참조하겠죠. 그러므로 HomeDirve처럼 시스템 드라이브가 출력되어요.
Text3는 Appdata의 경로를 출력해주어요. 전 Window7이고, 사용자명은 a이니.
'D:\Users\a\AppData\Roaming\'을 출력해주어요.
환경변수는 많아요, UserProfile 이라던지 등등 갑작이 생각이 안나네요.
자 이제 본론으로 가볼까요?
자 커맨드버튼에 다음과같이 코딩해주어요.
Private Sub Command1_Click() |
자 또 해석을 해볼까요?!
Dim Status As Long 총 모든 용량의 크기를 담을 함수를 선언합니다.
Dim TotalBytes As Currency 총 용량의 크기를 담을 함수를 선언합니다.
Dim FreeBytes As Currency 남은용량 크기를 담을 함수를 선언합니다.
'--바람개비님 제보. lpFreeBytesAvailableToCaller 인자값을 를 제보해주셨어요.
Dim BytesAvailableToCaller As Currency 클러스트 당 섹터수를 지정할 변수를 선언합니다.
Status = GetDiskFreeSpaceEx(Text1.Text, BytesAvailableToCaller, _
TotalBytes, FreeBytes)
GetDiskFreeSpaceEx() 함수를 이용해 모든 용량 크기 을 담습니다.
If Status <> 0 Then
Label1 = Format(TotalBytes * 10000, "#,##0") & " Total Bytes"
Label2 = Format(FreeBytes * 10000, "#,##0") & " Free Bytes"
Label3 = Format(BytesAvailableToCaller * 10000, "#,##0") & " Bytes Available To Caller"
End If
Status가 0보다 작거나 크면,
Label1에 총 용량을 바이트로 출력합니다.
Label2에 남은 용량을 바이트로 출력합니다.
Label3에 BytesAvailableToCaller을 출력합니다.
어때요? 잘되나요? 오타 또는 틀린점 지적 받습니다.
* 바람개비님 제보. 감사합니다.
'IT > Visual Basic' 카테고리의 다른 글
[제작중지] vbChat Bot Rev1.0.2 (8) | 2011.11.01 |
---|---|
짱라이브 플레이어 (JJangLive Player) (2) | 2011.10.23 |
[강좌] Winhttp를 이용한 파싱 강좌, 파싱한걸 Listview에 출력해보자! (0) | 2011.10.10 |
AfreecaTv Muti View Rev 1.2.7 (4) | 2011.10.10 |
4Shared MP3 DownLoader Rev1.1 (0) | 2011.10.10 |