Lập trình Windows Slide về thư viện động DLL. Tạo dll từ C dùng trong cùng solution của C Tạo dll từ C, nạp động khi chạy từ C Kĩ thuật plugin Tạo dll từ C++, nạp lên dùng bởi C Tạo dll từ C, nạp lên dùng bởi C++
Dynamic link library Lập trình Windows Các kĩ thuật Tạo dll từ C# & dùng solution C# Tạo dll từ C#, nạp động chạy từ C# Kĩ thuật plugin Tạo dll từ C++, nạp lên dùng C# Tạo dll từ C#, nạp lên dùng C++ DLL chứa gì? Hàm, lớp Tài nguyên: hình ảnh, tập tin, âm thanh, trỏ… Để lấy tài nguyên lúc runtime, dùng hàm Assembly.GetManifestResourceStream Tạo DLL solution Tạo project dạng Class Library bên solution Trong project cha, thêm tham chiếu Nhấn chuột phải > Add Reference Trong tab project, chọn tên project dll tạo Sử dụng hàm lớp dll cần thêm khai báo Using http:// www.mindstick.com/Articles/9d1f70d0-efab-4e56-a511-18 92020e7a95 Tạo DLL riêng nạp Phải đặt với tập tin exe Nạp vào nhớ từ đường dẫn Assembly.LoadFile() Lấy lớp tương ứng muốn dùng GetType(“Ten”) Tạo thể hiện: Activator.CreateInstance() Gọi hàm sử dụng Reflection Gọi hàm sử dụng dynamic (.Net 4.0) Tạo plugin Các bước Tạo dll khai báo interface Tạo dll khác kế thừa từ interface Hiện thực hóa theo nghiệp vụ tương ứng riêng Khi chạy, nạp dll Demo Chương trình tính tốn với số Mặc định chương trình làm phép cộng Khi scan thêm vào hai khả phép trừ phép nhân Bài tập Viết chương trình chơi Búa Kéo Bao với AI AI mặc định kèm tập tin exe: random AI DLL, scan AI ăn gian: luôn thắng AI nịnh bợ: luôn thua Viết chương trình vẽ với khả vẽ hình Hình mặc định kèm đường thẳng hình hình vng hình tròn đặt DLL, scan thấy Cài đặt cho nhập mật nạp DLL Mở rộng – Tự tìm hiểu 10 Gọi Win32 API: P/Invoke Calling Win32 DLLs in C# with P/Invoke http://msdn.microsoft.com/en-us/magazine/cc164123.aspx Giả sử ta muốn gọi hàm MessageBeep user32.dll có nguyên mẫu sau: BOOL MessageBeep( UINT uType /* beep type */); Khai báo ánh xạ C#: [DllImport("User32.dll")] static extern Boolean MessageBeep(UInt32 beepType); Sau gọi hàm bình thường 11 Tạo C++ DLL gọi từ C# http:// www.codeproject.com/Articles/9826/How-to-create -a-DLL-library-in-C-and-then-use-it-w 12 Late binding C++ DLL http:// www.codeproject.com/Articles/1557/Late-bindingon-native-DLLs-with-C 13 ...Các kĩ thuật Tạo dll từ C# & dùng solution C# Tạo dll từ C#, nạp động chạy từ C# Kĩ thuật plugin Tạo dll từ C++, nạp lên dùng C# Tạo dll từ C#, nạp lên dùng C++ DLL chứa gì? Hàm,... (.Net 4.0) Tạo plugin Các bước Tạo dll khai báo interface Tạo dll khác kế thừa từ interface Hiện thực hóa theo nghiệp vụ tương ứng riêng Khi chạy, nạp dll Demo Chương trình tính tốn với... Giả sử ta muốn gọi hàm MessageBeep user32 .dll có nguyên mẫu sau: BOOL MessageBeep( UINT uType /* beep type */); Khai báo ánh xạ C#: [DllImport("User32 .dll" )] static extern Boolean MessageBeep(UInt32