8.1 DLL và c u trúc c a Windowsấ ủ
8.1.1 Các h p tho i thông d ng ộ ạ ụ
DướI đây là m t h p tho I m t p tinộ ộ ạ ở ậ
H p tho I này không ch ti t ki m th I gian cho chúng ta, mà còn t o nên m tộ ạ ỉ ế ệ ờ ạ ộ giao di n ngệ ườ ử ụI s d ng g n gũi và th ng nh t v I môi trầ ố ấ ớ ường Windows
H p tho I này do Windows cung c p, n m trong th vi nộ ạ ấ ằ ư ệ \Windows\System\comdlg32.Dll. T p tin này ch a các đo n chậ ứ ạ ương trình t o raạ các h p tho I thông d ng khác nhau. Do t p h p l I trong m t th m c dùng chungộ ạ ụ ậ ợ ạ ộ ư ụ là Windows\system, nó cho phép m I ng d ng Windows có quy n truy c p vàọ ứ ụ ề ậ th m chí b n thân Windows cũng v y.ậ ả ậ
Các t p tin DLL này đậ ược biên d ch v I C/C++.ị ớ
Hình 9.1 H p tho I m t p tin là m t trong nh ng h p tho I thông d ng c aộ ạ ở ậ ộ ữ ộ ạ ụ ủ
Windows
8.1.1 Th vi n liên k t đ ngư ệ ế ộ
Đ i v i các ngông ng l p trình c đi n nh C, khi biên d ch chố ớ ữ ậ ổ ể ư ị ương trình, ta có m t t p tin EXE duy nh t có th độ ậ ấ ể ược thi hành mà không c n b t c t p tinầ ấ ứ ậ nào khác (t p tin.vbp c a Visual Basic không ph I trậ ủ ả ường h p này, vì nó ch ch yợ ỉ ạ trong môi trường Visual Basic). Toàn b chộ ương trình c n thi t đầ ế ược ch a h tứ ế trong m t t p tin EXE. Tuy nhiên, cũng có r t nhi u th vi n C độ ậ ấ ề ư ệ ược dùng r ngộ rãi. V n đ là làm sao s d ng l I các đo n chấ ề ử ụ ạ ạ ương trình vi t s n trong chế ẵ ương trình c a ta. Đó chính là ủ liên k t ế (link). Có hai lo I liên k t : ạ ế liên k t tĩnhế ( static link) và liên k t đ ngế ộ (dynalic link).
Liên k t tĩnhế
Cung c p m t k t n I n n v ng gi a chấ ộ ế ố ề ữ ữ ương trình và module vi t s n ngay lúcế ẵ thi t k ; tế ế ương t ta t o module trong Visual Basic và g I th t c trong đó, chự ạ ọ ủ ụ ỉ khác là liên k t tĩnh thì ch a bên ngoài Visual Basic. Tuy nhiên, đ s d ng liênế ứ ể ử ụ k t tĩnh, ta c n copy ph n chế ầ ầ ương trình vi t s n c a th vi n vào t p tin chế ẵ ủ ư ệ ậ ương trình khi biên d ch. T đó tr đi, chúng tr thành m t ph n c a chị ừ ở ở ộ ầ ủ ương trình và bị khoá ch t v I chặ ớ ương trình.
Liên k t đ ng ế ộ
Là gi I pháp linh ho t h n liên k t tĩnh. T p tin th vi n bên ngoài không bả ạ ơ ế ậ ư ệ ị ràng bu c v I bên ngoài. Nó ch a m t n i sao cho t p tin EXE có th tìm ra vàộ ớ ứ ở ộ ơ ậ ể g I thông đi p cho nó. Khi thi hành, các thông đi p này là nh ng cu c g I đ n cácử ệ ệ ữ ộ ọ ế hàm/th t c, yêu c u ph n chủ ụ ầ ầ ương trình nào đó c a DLL đủ ược thi hành.
Các DLL c a Visual Basic ủ
Có l Visual Basic là m t minh ho cho vi c s d ng DLL. Vào thẽ ộ ạ ệ ử ụ ư m c \ụ Windows\system, ta s th y m t lo t các t p tin c u t o nên c ch thi hànhẽ ấ ộ ạ ậ ấ ạ ơ ế c a VB. Ví d , ủ ụ VB5DB.DLL ch a chứ ương trình kiên k t v I DAO (ế ớ Đ I tố ượng truy c p d li uậ ữ ệ ) lúc thi hành đ ng d ng có th tìm ki m các c s d li u c c b .ể ứ ụ ể ế ơ ở ữ ệ ụ ộ Khi ta xây d ng m t ng d ng c s d li u và biên d ch nó, t p tin EXEự ộ ứ ụ ơ ở ữ ệ ị ậ không bi t gì v c s d li u. Thay vào đó, nó s d ng m t s đo n chế ề ơ ở ữ ệ ử ụ ộ ố ạ ương trình c a VB cho phép n p th vi n ủ ạ ư ệ VB5DB.DLL lúc thi hành và g I các hàm trong đó. ọ
Th m nh c a DLLế ạ ủ
• Nh t quánấ : Ngườ ử ụI s d ng a chu ng Windows vì nó không ít thì nhi u cóư ộ ề m t giao di n ngộ ệ ườ ử ụI s d ng ph bi n cho m I ng d ng. Ví d các h pổ ế ọ ứ ụ ụ ộ tho I thông d ng, các menu, thanh công c c a ạ ụ ụ ủ Office97 … Nghĩa là có nh ng đo n chữ ạ ương trình chung đ t o ra chúng.ể ạ
• D b o trìễ ả : Nh ng thay đ I ho c b sung n u có s th hi n trên m I ngữ ổ ặ ổ ế ẽ ể ệ ọ ứ d ng.ụ
• T p tin EXE nh h nậ ỏ ơ : Do m t ph n công vi c ch a n i khác, và khôngộ ầ ệ ứ ở ơ g n k t “c ng nh c” nh liên k t tĩnh, kích c t p tin EXE đắ ế ứ ắ ư ế ỡ ậ ược gi m nh .ả ỏ Ch có đi u là DLL còn ch a nhi u ph n khác, không ch là nh ng gìỉ ề ứ ề ầ ỉ ữ chương trình c a ta c n. ủ ầ
C u trúc Windowsấ
DLL là n n t ng c a thi t k Windows. Windows th c ch t là t p h p cácề ả ủ ế ế ự ấ ậ ợ
DLL đ các ng d ng khác nhau có th dùng chung. Bên trong các ể ứ ụ ể DLL này là hàng trăm hàm/th t c. Ta g I chúng là ủ ụ ọ Windows API.
8.2 WIN API
Giao di n l p trình ng d ngệ ậ ứ ụ (Application Programmer’s Interface) là t p h p các hàm/th t c có s n c a Windows.ậ ợ ủ ụ ẵ ủ
Chúng g n gũi v I ngôn ng C/C++ h n.ẫ ớ ữ ơ
Visual Basic được thi t k theo ki u che b t các công vi c bên dế ế ể ớ ệ ướ ệ ốI h th ng. Ph n l n các cu c goi đ n các hàm API đầ ớ ộ ế ượ ồc l ng trong các d ng l nh Visualạ ệ Basic, t khoá, phừ ương th c và thu c tính. Chúng s đứ ộ ẽ ược thông d ch thànhị
WinAPI bên trong c a Visual Basic.ủ
Tuy nhiên, v n có m t s hàm API mà Visual Basic không có ph n tẫ ộ ố ầ ương đương. Ví d , Visual Basic chu n không có cách nào cho ngụ ẩ ườ ậI l p trình đi uề