Jump to content
Sign in to follow this  
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:

Hidden Content

    Give reaction or reply to this topic to see the hidden content.

 

:b01:

  • Like 2
  • Thanks 1
  • Haha 1

Share this post


Link to post
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
Reply to this topic...

×   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.

Sign in to follow this  

×
×
  • Create New...