AutoIt - Share UDF
Bạn có muốn phản ứng với tin nhắn này? Vui lòng đăng ký diễn đàn trong một vài cú nhấp chuột hoặc đăng nhập để tiếp tục.

Zip/Unzip với 7zip.dll load trực tiếp từ bộ nhớ (không cần dll ngoài ổ cứng)

Go down

Zip/Unzip với 7zip.dll load trực tiếp từ bộ nhớ (không cần dll ngoài ổ cứng) Empty Zip/Unzip với 7zip.dll load trực tiếp từ bộ nhớ (không cần dll ngoài ổ cứng)

Bài gửi by Admin Sat Feb 20, 2021 2:29 pm

• Mô tả
  - 7zip là một phần mềm mã nguồn mở có chức năng nén/giải nén mạnh mẽ, bên cạnh đó nó còn cung cấp cho người dùng các phương thức tương tác bằng CommandLine, API dll.
  - 7ZipMem.au3 được viết trên nền của UDF 7zip.au3 (Author: rasim) kết hợp MemoryDll (Author: Ward), giúp nén/giải nén mà không cần 7zip.dll đi kèm theo.
  - 7Zip-Simple-UDF được viết để tóm tắt lại 3 hàm chính của 7ZipMem.au3 là: Add, Extract và gọi Callback thông tin nén/giải nén. Dễ hiểu, dễ sử dụng cho cả những người mới bắt đầu học AutoIt.

  - UDF chạy được trên nền x86 và x64.


• Sử dụng
   Các hàm chính của UDF:
       Zip_Startup(...): Khởi tạo 7zip Dll.
       Zip_Add(...): Nén Tệp tin hoặc Thư mục.
       Zip_Extract(...): Giải nén tệp nén.
       Zip_CreateProgressCallback($HàmCallBack): Gọi một hàm callback để nhận thông tin nén / giải nén, hàm Callback này sẽ luôn luôn có mẫu như sau:
             Func CallBackFunction($Tổng_Size_của_tệp_hoặc_folder_cần_nén/giảinén, $Size_đã_nén/giảinén_hiện_tại, $Tên_tệp_đang_nén/giảinén)
               ........
             EndFunc
       (Xem cụ thể trong 2 tệp ví dụ)      

Zip/Unzip với 7zip.dll load trực tiếp từ bộ nhớ (không cần dll ngoài ổ cứng) J0DxsYD


• Tải về:
http://bblink.com/ZipWithCallback


• Ghi chú:
Khi set data cho Input/Label liên tục sẽ gây hiện tượng Blink (nháy/giật) GUI, ta có thể khắc phục bằng cách giãn cách thời gian set data, trong tệp ví dụ đính kèm ta sửa lại hàm callback như sau để thấy hiệu quả:
Code:
Func ProgressCallback($TotalSize, $CurrentSize, $FileName)
 Local Static $timer = TimerInit()
 If TimerDiff($timer) > 75 Then ;Tăng 75ms lên nếu vẫn thấy giật
 GUICtrlSetData($idLabel_FileName, $FileName)
 GUICtrlSetData($idLabel_CurrentSize, $CurrentSize & ' bytes')
 GUICtrlSetData($idLabel_TotalSize, $TotalSize & ' bytes')
 $Percent = Int($CurrentSize / $TotalSize * 100)
 GUICtrlSetData($idLabel_Percent, $Percent & '%')
 GUICtrlSetData($idProgress, $Percent)
 $timer = TimerInit()
 EndIf
EndFunc
Admin
Admin
Admin

Tổng số bài gửi : 6
Join date : 12/11/2020

Xem lý lịch thành viên https://autoit-udf.forumvi.com

Về Đầu Trang Go down

Về Đầu Trang


 
Permissions in this forum:
Bạn không có quyền trả lời bài viết