Jump to content
Superman Cant Fly

Hướng dẫn liên kết AutoIt với các thư viện DLL C# qua cổng COM

Recommended Posts

BƯỚC 1 - CHỈNH SỬA THƯ VIỆN C# ĐỂ AUTOIT VÀ DLL ĐÓ CÓ THỂ "NHÌN THẤY NHAU" QUA CỔNG COM

- Để có thể liên kết AutoIt với thư viện DLL của C# thông qua COM thì Dll đó phải được cài đặt chế độ COMVisible=True. Để làm được điều này ta sẽ thực hiện như sau:

+ Nếu máy tính của bạn có cài IDE lập trình C# thì đơn giản là mở source code của DLL đó nếu nó được nhà phát triển cung cấp.

+ Cách khác là ta có thể chỉnh sửa trực tiếp DLL C# bằng phần mềm hoàn toàn miễn phí dnSpy. Nếu máy đã cài .Net Framework 4.7.2 thì tải

dnSpy-net472.zip. Nếu  chưa cài .Net Framework thì tải dnSpy-netcore-win32.zip hoặc dnSpy-netcore-win64.zip

- Sau đó ta cài đặt dòng [assembly: ComVisible(true)] ở mục  khai báo DLL như ví dụ dưới:

8Oi3Dzm.png

 

- Nếu là chỉnh sửa source bằng IDE thì đơn giản rồi, còn nếu chỉnh sửa bằng dnSpy thì cách làm như sau:

+ Mở chương trình dnSpy.

+Open DLL cần chỉnh sửa, từ panel bên trái ta chọn tên thư viện cần chỉnh:

9rLqHoh.png

+ Ta sẽ tìm thấy dòng [assembly: ComVisible(false)] hoặc [assembly: ComVisible(true)] (Nếu không tìm thấy dòng này thì tự thêm vào), nếu chế độ đang là true thì khỏi cần chỉnh gì cả, nếu là false thì ta nhấp phải vài bất cứ dòng nào ở panel bên phải, chọn Edit Assembly Attributes (C#)...

OjxM3XU.png

+ Xong rồi thì Save lại DLL là hoàn tất bước 1.

 

BƯỚC 2: CODE AUTOIT GIÚP KẾT NỐI AUTOIT VÀ DLL C#

- Ta có thư viện được viết bởi guinness (DEV autoscript.com) tại địa chỉ sau: https://www.autoitscript.com/forum/topic/166704-net-compiled-dll-assembly-in-autoit-the-simple-approach/Bạn không cần vào tải thư viện trên vì tôi đã đính kèm Thư viện này + Các ví dụ ở tập tin đính kèm bên dưới. 

- Cách viết code:

+ Load Dll bằng hàm _DotNet_Load

+ Gọi Object bằng hàm ObjCreate với tham số classname là: Namespace.Class

+ Phần còn lại là phụ thuộc vào bạn vì mỗi DLL sẽ có cấu trúc gọi lệnh hàm COM khác nhau, nhưng nói chung chỉ cần ít kiến thức về COM, class...và đọc ví dụ bên code C# về DLL đó là dễ dàng chuyển đổi sang code AutoIt.

- Ví dụ liên kết AutoIt với thư viện khá nổi bên C# là HtmlAgilityPack.dll

  • Code C#:

f4MZ1vU.png

  • Chuyển sang code AutoIt:

PvM5XCq.png

 

TẢI VỀ CODE MẪU + MỘT SỐ DLL C# ĐÃ EDIT SẴN CHẾ ĐỘ COMVISIBLE=TRUE ĐỂ TEST:

Nội dung ẩn

    Bạn cần Reaction hoặc trả lời chủ đề này để thấy nội dung bị ẩn.

 

:b01:

  • Like 6
  • Thanks 2
  • Haha 1
  • Yêu thích 3

Chia sẻ bài đăng này


Link tới bài viết
Share on other sites
15 phút trước, minhchientmc said:

Mình không download về được nhỉ

chia buồn với bạn, link drive này đã bị google xóa .... bạn kia cũng mất code rồi :c01:, mình lại không lưu bản dự trữ...

Chia sẻ bài đăng này


Link tới bài viết
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Trả lời chủ đề này...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...