copyfileex 예제

août 2, 2019 8:10 Publié par

기존 파일에 대한 파일 특성이 새 파일에 복사됩니다. 예를 들어 기존 파일에 FILE_ATTRIBUTE_READONLY 파일 특성이 있는 경우 CopyFile 호출을 통해 만든 복사본에도 FILE_ATTRIBUTE_READONLY 파일 특성이 있습니다. 자세한 내용은 파일 특성 검색 및 변경을 참조하십시오. COPY_FILE_COPY_SYMLINK가 지정되면 다음 규칙이 적용됩니다. 콜백은 개체의 메서드가 될 수 없지만 CopyFileEx의 lpData 매개 변수를 사용하여 양식 참조와 같은 모든 종류의 데이터를 콜백에 전달할 수 있습니다. 따라서 콜백에서 진행률 양식을 제공하려면 작업을 수행하는 작은 프로젝트가 있습니다. File.Copy는 콜백 이나 옵션 없이 복사를 수행 합니다. 윈도우 7, 윈도우 서버 2008 R2, 윈도우 서버 2008, 윈도우 비스타, 윈도우 서버 2003 및 윈도우 XP : 당신은 LAN에서 파일 복사 작업을 최적화하는 응용 프로그램을 작성하는 경우, 윈도우 소켓에서 TransmitFile 기능을 사용하는 것이 좋습니다 (Winsock ). TransmitFile은 고성능 네트워크 전송을 지원하며 파일의 내용을 원격 컴퓨터로 전송하는 간단한 인터페이스를 제공합니다. TransmitFile을 사용하려면 원본 컴퓨터에서 파일을 보내는 Winsock 클라이언트 응용 프로그램과 다른 Winsock 함수를 사용하여 원격 컴퓨터에서 파일을 수신하는 Winsock 서버 응용 프로그램을 작성해야 합니다. 콜백 함수를 통해 진행 상황을 응용 프로그램에 알리면서 기존 파일을 새 파일에 복사합니다.

DoFileCopy 파일 복사 작업을 설정 하 고 진행 률 대화 상자를 표시 (잠시에 올 거 야) 그리고 CopyCallback는 CopyProgressRoutine. 이 콜백은 파일 복사본의 진행률을 계산하고 진행률 양식의 진행률 표시줄을 업데이트합니다. CopyFileExWrapper cfewEngine = 새 복사파일익래퍼(); 이제 프로그램을 컴파일하고 실행할 수 있습니다. 열려 있는 파일 대화 상자를 표시하려면 기본 양식의 단추를 클릭합니다. 복사할 파일을 선택합니다 . 대화 상자와 파일 복사본이 시작되고 진행률 대화 상자가 표시되어 파일 복사본이 진행됨 표시줄을 업데이트합니다. 진행 기 대화 상자의 중단 단추를 클릭하여 복사본을 취소해 보십시오. Unit1의 사용 절에서 Unit2에 대한 참조를 추가합니다. 파일의 다른 부분이 복사될 때마다 호출되는 LPPROGRESS_ROUTINE 형식의 콜백 함수의 주소입니다.

이 매개 변수는 NULL일 수 있습니다. 진행률 콜백 함수에 대한 자세한 내용은 CopyProgressRoutine 함수를 참조하십시오. 복사 작업 중에 이 플래그가 TRUE로 설정되면 작업이 취소됩니다. 그렇지 않으면 복사 작업이 계속 완료됩니다. . 개인 선언 자동 함수 copyFileEx Lib « kernel32.dll » (문자열로 ByVal lpExistingFileName, _ ByVal lpNewFile Name 문자열로, ByVal lpNewFile 을 복사 진행 루틴으로, _ ByVal lpData intPtr로, ByRef pbCancel 부울, _ByVal dwCopyFlags CopyFileFlags) 부울 [DllImport (« kernel32.dll », SetLastError = true, CharSet = CharSet.Auto)] [반환: MarshalAs(관리되지 않는 Type.Bool)] 정적 외피 바피파일렉스(문자열 lpexistingFileName, 문자열) lpNewFileName, 복사 진행 루틴 lpProgressRoutine, IntPtr lpData, ref Int32 pbCancel, CopyFileFlags dwCopyFlags); 대리모 복사진행결과 복사진행기루틴(긴 TotalFileSize, 긴 TotalBytes전송, 긴 스트림크기, 긴 스트림바이트 전송, uint dwStreamNumber, 복사진행콜백, 복사콜백이유, IntPtr hSourceFile, IntPtr hSourceFile, IntPtr hDestinationFile, IntPtr lpData); int pbCancel; 열거형 복사진행결과 : uint = PROGRESS_CONTINUE = 1, PROGRESS_STOP = 2, PROGRESS_QUIET = 3 } 열거형 복사진행률콜백이유 : uint { CALLBACK_CHUNK_FINISHED = 0x00000000, CALLBACK_STREAM_SWITCH = 0x0000000 } [플래그] CopyFileFlags : uint { COPY_FILE_FAIL_IF_EXISTS = 0x0000000001, COPY_FILE_RESTARTable = 0x000000002, COPY_FILE_OPEN_SOURCE_FOR_WRITE, COPY_FILE_ALLOW_CRYPTED_DESTINATION = 0x00000000 { CopyFileEx (이전 파일, 새 파일, 새 복사 진행 루틴 (이. 카피프로이트핸들러), IntPtr.Zero, ref pbCancel, 카피파일플래그스.COPY_FILE_RESTARTable); } 개인 복사진행결과 복사진행기(긴 합계, 긴 전송, 긴 스트림크기, 긴 StreamByte, uint dwStreamNumber, 카피프로이프콜백 이유, IntPtr hSourceFile, IntPtr hDestinationFile, IntPtr lpData) { 반환 복사진행률.진행률_계속; } 두 가지 형태로 새 Delphi 프로젝트를 만듭니다.

Classés dans :Non classé

Cet article a été écrit par NotreSite

Les commentaires sont fermés.