1. URLDownloadToFile
urlmon.dll (윈도 기본 DLL)을 이용해서 매우 간단하게 위치를 지정하고 그곳에 내려받습니다. 내려받는 상황은 실시간으로 볼 수 없으며 내려받는 동안 프로그램은 지연됩니다.
2. URLDownloadToFile 개량
역시 1번과 같은 방법을 사용하나, 내려받는 동안 지연되지 않고 진행 상황을 표시 할 수 있습니다. 그러나 세부적인 제어는 불가능합니다. 창조로 직접 구현 역시 일단 불가능입니다. 그러나 기타자료실에 제 DLL이 올려져 있으니 참조하세요. 제 이름으로 검색해보세요. ps.구루 나 ps.이진백... 둘 중 하나.
3. IE 내려받기 창 이용
IE 내려받기를 내려받는 방법에는 두 가지가 있습니다.
shdocvw.dll 의 함수를 이용합니다.
첫째, 자동으로 내려받기 할 위치를 묻습니다. 바로 "다른 이름으로 저장" 창이 뜨면서 내려받을 위치를 지정하게 합니다.
둘째, [실행]과 [저장]을 묻습니다. 일반적으로 내려받기 링크를 누르면 뜨는 창이죠.
이 3번의 경우는 사용자가 직접 위치를 지정한다는 점, 프로그램 코드 상으로 내려받는 상황을 직접 제어할 방법이 없다는 겁니다.
4. 탐색기로 탐색
3과 비슷한 결과입니다. 실행해 함수로 원하는 위치를 탐색하거나, 인터넷주소 함수를 사용합니다.
5. Wininet 유닛의 함수 사용
상당히 복잡하지만, 그 만큼 세밀한 제어가 가능합니다. 강좌나 팁란에서 지상현님의 글을 읽어보시면 잘 알 수 있을겁니다. 인자의 형식이 대부분 구조체인데다 포인터 역시 필요하니 원칙상 창조로는 불가능이나, 꽁수를 이용하여 가능합니다. 물론 어렵습니다.