Tải bản đầy đủ (.pptx) (13 trang)

Windows programming DLL

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (85.89 KB, 13 trang )

Dynamic link library
Lập trình Windows


Các kĩ thuật
 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++

2


DLL chứa được gì?
 Hàm, lớp
 Tài nguyên: hình ảnh, tập tin, âm thanh, con trỏ…
 Để lấy tài nguyên lúc runtime, dùng hàm
Assembly.GetManifestResourceStream

3


Tạo DLL trong cùng solution
 Tạo project dạng Class Library bên trong 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 của lớp trong dll cần thêm khai báo
 Using



 http://
www.mindstick.com/Articles/9d1f70d0-efab-4e56-a511-18
92020e7a95
4


Tạo DLL riêng và nạp
 Phải được đặt cùng với tập tin exe
 Nạp vào bộ nhớ từ đường dẫn Assembly.LoadFile()
 Lấy ra lớp tương ứng muốn dùng GetType(“Ten”)
 Tạo ra thể hiện: Activator.CreateInstance()
 Gọi hàm sử dụng Reflection
 Gọi hàm sử dụng dynamic (.Net 4.0)
5


Tạo plugin

6


Các bước
 Tạo một dll khai báo interface
 Tạo các dll khác kế thừa từ interface trên
 Hiện thực hóa theo nghiệp vụ tương ứng riêng

 Khi chạy, nạp các dll này

7



Demo
 Chương trình tính tốn với 2 số.
 Mặc định chương trình làm được phép cộng
 Khi scan thì sẽ thêm vào hai khả năng mới là phép
trừ và phép nhân

8


Bài tập
 Viết chương trình chơi Búa Kéo Bao với 3 AI
 AI mặc định đi kèm tập tin exe: random
 2 AI trong 2 DLL, khi được scan thì mới hiện ra
AI ăn gian: luôn luôn thắng
AI nịnh bợ: ln ln thua

 Viết chương trình vẽ với khả năng vẽ 3 hình
 Hình mặc định đi kèm là đường thẳng
 2 hình kế tiếp là hình vng và hình tròn được đặt trong 2 DLL, khi
scan mới thấy
 Cài đặt sao cho nhập đúng mật khẩu thì mới nạp được 2 DLL này
9


Mở rộng – Tự tìm hiểu

10



Gọi Win32 API: P/Invoke
 Calling Win32 DLLs in C# with P/Invoke
 />
 Giả sử ta muốn gọi hàm MessageBeep trong user32.dll có
nguyên mẫu như sau:
 BOOL MessageBeep( UINT uType /* beep type */);

 Khai báo ánh xạ trong C#:
[DllImport("User32.dll")]
static extern Boolean MessageBeep(UInt32 beepType);

 Sau đó gọi hàm như bình thường
11


Tạo C++ DLL và 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




Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×