BỘ GIAO THÔNG VẬN TẢI TRƢỜNG ĐẠI HỌC HÀNG HẢI BỘ MÔN: KHOA HOC MA Y TI NH KHOA: CÔNG NGHỆ THÔNG TIN BÀI GIẢNG LẬP TRÌNH WINDOWS TÊN HỌC PHẦN : Lập trình Windows MÃ HỌC PHẦN : 74 TRÌNH ĐỘ ĐÀO TẠO : ĐẠI HỌC CHÍNH QUY DÙNG CHO SV NGÀNH : CÔNG NGHỆ THÔNG TIN HẢI PHÕNG - 00
Tên học phần: Lập trình Windows Loại học phần: Bộ môn phụ trách giảng dạy: Khoa học Máy tính Khoa phụ trách: CNTT Mã học phần: 74 Tổng số TC: 3 TS tiết Lý thuyết Thực hành/xemina Tự học Bài tập lớn Đồ án môn học 60 30 30 0 0 0 Điều kiện tiên quyết: Sinh viên phải học xong các học phần sau mới đƣợc đăng ký học phần này: Lâ p triǹh hƣơ ng đô i tƣơṇg, Câ u tru c dƣ liêụ Mục tiêu của học phần: - Cung cấp các kiến thức cơ bản vê lâ p triǹh trƣc quan trên hê điê u ha nh Windows - Cung câ p ca c kiê n thƣ c vê truy câ p va can thiê p va o ca c t hành phần cu a hê điều hành Windows Nội dung chủ yếu Các kiến thức về thao tác với file và thƣ muc, cơ sơ dƣ liêụ registry, các luồng, tiê n trình, dich vu, các thƣ viên liên kết đông và lập trình sockets trên Windows. Nội dung chi tiết của học phần: PHÂN PHỐI SỐ TIẾT TÊN CHƢƠNG MỤC TS LT TH/Xemina BT KT Chƣơng I. Các khái niệm cơ bản 3 0 0 0.. Giới thiêu về môi trƣơ ng lâ p triǹh trên Windows... Cơ sơ vê hê điê u ha nh Windows... Các phiên bản cu a hê điê u ha nh Windows..3. Vai tro cu a Windows trên thi ṭrƣơ ng phâ n mê m.. Thƣ viêṇ Win3 và Win64... Win3 API... Win64 API.3. Giơ i thiêụ vê bô công cu Visual Studio 005 Chƣơng II. Hê thô ng file va thƣ mục 4 4 0.. Truy câ p va sƣ duṇg hê thô ng file trên môi trƣơ ng Windows... Hê thô ng file va thƣ mu c cu a Windows... Các thao tác với file và thƣ muc trên Windows..3. Các vấn đề liên quan tới Unicode.. Các ví du về thao ta c vơ i file... Tao file và xư lý các lô i liên quan i
PHÂN PHỐI SỐ TIẾT TÊN CHƢƠNG MỤC TS LT TH/Xemina BT KT... Copy file..3. Hiê n thi ḍanh sa ch ca c file trong thƣ mu c hiêṇ thơ i.3. Quản lý file và thƣ muc nâng cao.3.. Con tro file.3.. Truy câ p tơ i ca c thuô c tińh cu a file và thƣ mu c Chƣơng III. Hê thô ng cơ sơ dƣ liêụ Registry 4 6 0 3.. Khái niêm và vai tro cu a CSDL Registry 3... Các kho a, các hive 3... Các kiê u dư liêu 3.. Quản lý CSDL Registry 3... Thay đô i kho a 3... Thêm mơ i kho a 3..3. Liêt kê ca c kho a 3.3. Can thiê p Windows qua Registry 3 3.3.. Thay đô i giao diêṇ 3.3.. Thay đô i ca c thiê t lâ p đô i vơ i ca c ô đi a 3.3.3. Thay đô i ca c thiê t lâ p vơ i ngƣơ i du ng Chƣơng IV. Quản ly các tiến trình và luô ng 4 6 0 4.. Các tiến trình và luồng trên Windows 4.. Các thao tác với tiến trình 4... Tao tiến trình 4... Kê t thu c va thoa t kho i môt tiê n triǹh 4..3. Các thao tác với biến môi trƣờng cu a Windows 4..4. Ví du : Ghi nhât ky thơ i gian thƣc hiêṇ cu a các tiến trình 4.3. Quản lý luồng (thread) trên Windows 4.3.. Các khái niêm cơ bản 4.3.. Mô hiǹh Boss /Worker va ca c mô hiǹh khác 4.3.3. Bô nhơ da nh cho luô ng 4.3.4. Đô ƣu tiên và các trang thái cu a luồng 4.4. Môt sô vi du vê tiê n triǹh va luô ng 4.4.. Tìm kiếm song song với các tiến trình 4.4.. Thuât toa n să p xê p trôṇ bă ng đa luô ng Chƣơng V. Các dich vụ của Windows 4 6 0 5.. Tô ng quan vê dich vu trên Windows 5.. Các thành phần cu a môt dich vu 5... Hàm main() 5... Hàm ServiceMain() 5..3. Kiê m soa t dich vu qua các Handler 5.3. Ví du: dich vu đơn giản trên Windows ii
PHÂN PHỐI SỐ TIẾT TÊN CHƢƠNG MỤC TS LT TH/Xemina BT KT 5.4. Quản lý các dich vu cu a Windows 5.4.. Các phƣơng pháp kiê m soát các dich vu cu a Windows 5.4.. Ví du : Điê u khiê n ca c dich vu cu a Windows Chƣơng VI. Lâ p triǹh maṇg vơ i Sockets 4 4 0 0 6.. Khái niêm sockets trên Windows 6.. Các hàm sockets phía server 6.3. Các hàm sockets phía client 6.4. Ư ng dung mang đơn gia n 6.4.. Phía server 6.4.. Phía client 6.5. Windows Sockets.0 Chƣơng VII. Thƣ viêṇ liên kê t đôṇg 4 4 0 0 7.. Khái niêm và ứng dung cu a thƣ viên liên kê t đôṇg 7.. Hê thô ng thƣ viêṇ DLL cu a Windows 7.3. Các bƣớc tao môt thƣ viên DLL 7.3.. Tao thƣ viêṇ DLL 7.3.. Viê t ƣ ng duṇg goi tơ i thƣ viêṇ DLL Nhiệm vụ của sinh viên : Tham dự các buổi thuyết trình cu a giáo viên, tự học, tự làm bài tập do giáo viên giao, tham dự các bài kiê m tra đinh kỳ và cuối kỳ. Tài liệu học tập : - Lê Hƣ u Đat. Lâp tri nh Windows. NXB Gia o du c. - Charles Petzold. Programming Windows, fifth edition. Microsoft Press. 998. - Johnson M. Hart. Windows System Programming Third Edition. Addison Wesley Professional. 004. Hình thức và tiêu chuẩn đánh giá sinh viên: - Hình thức thi cuối kỳ : Thi vấn đáp. - Sinh viên phải đảm bảo các điều kiên theo Quy chế cu a Nhà trƣờng và cu a Bô Thang điểm: Thang điểm chữ A, B, C, D, F Điểm đánh giá học phần: Z = 0,3X + 0,7Y.,5 iii
MỤC LỤC LỜI NÓI ĐẦU... CHƢƠNG : CA C KHA I NIÊM CƠ BẢN.... Giới thiêu về môi trƣờng lập trình Windows.... Cơ sở về hê điều hành Windows.... Các phiên bản cu a hê điều hành Windows....3 Vai tro cu a Windows trên thi trƣờng phần mềm... 3. Thƣ viên Win3 và Win64... 3. Win3 API... 3. Win64 API... 4 3. Các bƣớc phát triê n ứng dung trên Windows... 4 3. Chƣơng trình Win3 đơn giản nhất.... 4 3. Chƣơng triǹh cƣ a sô đơn gia n... 5 3.3 Quản lý các thông điêp... 4 3.4 Vo ng lăp xư lý thông điêp... 7 Bài tập:... 0 CHƢƠNG : HÊ THÔ NG FILE VA THƢ MUC.... Truy câ p va sƣ duṇg hê thô ng file trên môi trƣơ ng Windows.... Các ví du về thao tác với file.... Serialization.... Cài đăt môt lớp Serializable... 4 3. Quản lý file và thƣ muc nâng cao... 40 Bài tập:... 40 CHƢƠNG 3: HÊ THÔ NG CSDL REGISTRY... 4. Khái niêm và vai tro cu a CSDL Registry... 4. Các kho a, các hive... 4. Các kiê u dư liêu... 4. Quản lý CSDL Registry... 43. Thay đô i kho a... 43. Thêm mơ i kho a... 43.3 Liêt kê các kho a... 44 3. Can thiê p Windows qua Registry... 44 3. Thay đô i giao diêṇ... 44 3. Thay đô i ca c thiê t lâ p đô i vơ i ca c ô đi a... 44 i
3.3 Thay đô i ca c thiê t lâ p vơ i ngƣơ i du ng... 44 Bài tập:... 44 CHƢƠNG 4: QUẢN LY CA C TIÊ N TRÌNH VÀ LUÔ NG... 45. Các tiến trình và luồng trên Windows... 45. Các thao tác với tiến trình... 46.. Tao tiến trình... 46.. Kê t thu c và thoát kho i môt tiến trình... 47.3. Các thao tác với biến môi trƣờng cu a Windows... 47.4. Ví du: Ghi nhât ky thơ i gian thƣc hiêṇ cu a ca c tiê n triǹh... 47 3. Quản lý luồng (thread) trên Windows... 49 3.. Các khái niêm cơ bản... 49 3.. Mô hiǹh Boss/Worker va ca c mô hiǹh kha c... 49 3.3. Bô nhơ da nh cho luô ng... 49 3.4. Đô ƣu tiên và các trang thái cu a luồng... 50 4. Môt sô vi du vê tiê n triǹh va luô ng... 50 4.. Tìm kiếm song song với các tiến trình... 50 4.. Thuât toa n să p xê p trôṇ bă ng đa luô ng... 5 Bài tập:... 55 CHƢƠNG 5: CA C DICH VU CU A WINDOWS... 56. Tô ng quan vê dich vu trên Windows... 56. Các thành phần cu a môt dich vu... 56. Hàm main()... 56. Hàm ServiceMain()... 56.3 Kiê m soát dich vu qua các Handler... 56 3. Ví du: dich vu đơn giản trên Windows... 57 4. Quản lý các dich vu cu a Windows... 60 4. Các phƣơng pháp kiê m soát các dich vu cu a Windows... 60 4. Ví du : Điê u khiê n ca c dich vu cu a Windows... 60 Bài tập:... 64 CHƢƠNG 6: LÂP TRI NH SOCKET... 65. Khái niêm sockets trên Windows... 65. Các hàm sockets phía server... 65 3. Các hàm sockets phía client... 66 4. Ư ng dung mang đơn giản... 66 ii
4. Phía server... 66 4. Phía client... 7 5. Windows Sockets.0... 74 Bài tập:... 74 CHƢƠNG 7: THƢ VIÊṆ LIÊN KÊ T ĐỘNG... 75 7.. Khái niêm và ứng dung cu a thƣ viên liên kết đông... 75 7.. Hê thống thƣ viên liên kết đông cu a Windows... 75 7.3. Các bƣớc tao môt thƣ viên DLL... 76 7.4. Chia se bô nhơ giƣ a ca c thƣ viêṇ liên kê t đôṇg... 83 7.5. Các vấn đề khác về thƣ viên liên kết đông... 84 Bài tập:... 85 TÀI LIÊU THAM KHẢO... 86 ĐỀ THI THAM KHẢO... 87 iii
LỜI NÓI ĐẦU Hê điều hành Windows cu a Microsoft là hê điều hành đƣợc cài đăt nhiều nhất trên các máy PC hiên nay. Sự phổ biến cu a Windows và nền tảng phần cứng cu a Intel dẫn tới sự cần thiết phải có như ng hiê u biết sâu về chúng, đăc biêt đối với như ng lập trình viên. Muc đích cu a học phần này là cung cấp cho học viên môt cái nhìn tổng quan, từ cơ bản tới chi tiết về các khía canh cu a lập trình trên hê điều hành Windows, từ các chi tiết trong cấu trúc cu a môt chƣơng trình tới các khái niêm cấp cao về tiến trình, luồng, xư lý song song, thƣ viên DLL, lập trình Socket, can thiêp vào cơ sở dư liêu Registry... Tài liêu này dựa trên như ng kinh nghiêm và nghiên cứu mà tác giả đã đu c ru t, thu thập trong quá trình giảng day môn học Lập trình C trên Windows, cu ng với sự tham khảo cu a các tài liêu cu a các đồng nghiêp, các tác giả trong và ngoài nƣớc, tƣ điê n trƣc tuyê n Wikipedia. Với bâ y chƣơng đƣợc chia thành các chu đề khác nhau từ ca c kha i niêṃ cơ ba n cho tới các thao tác với hê thống file, thƣ muc, hê thống CSDL Registry, quản lý tiến trình và luồng, lập trình quản lý dich vu, lập trình socket, thƣ viên liên kết đông DLL hy vọng sẽ cung cấp cho các em sinh viên, các ban đôc giả môt tài liêu bổ ích. Măc du đã rất cố gắng song vẫn không tránh kho i môt số thiếu so t, hy vọng sẽ đƣợc các ban bè đồng nghiêp, các em sinh viên, các ban đôc giả go p ý chân thành đê tôi co thê hoàn thiên hơn nư a tài liêu này. Xin gư i lời cảm ơn chân thành tới các ban bè đồng nghiêp và Ban chu nhiêm khoa Công nghê Thông tin đã tao điều kiên giu p đỡ đê tài liêu này co thê hoàn thành. Hải phòng, tháng 06 năm 00 Tác giả Nguyêñ Hƣ u Tuân
Chƣơng : Các khái niệm cơ bản Tài liêu này đƣợc biên soan đê cung cấp cho ngƣời ho c như ng kiến thức cơ bản vế viêc viết các chƣơng trình sư dung giao diên lập trình API trên môi trƣờng Win3. Ngôn ngư đƣợc sư dung là ngôn ngư C, hầu hết các trình biên dich C++ hiên nay đều co thê dich đƣợc các chƣơng trình mẫu trình bày trong tài liêu này. Hầu hết tất cả các thông tin đƣợc trình bày trong tài liêu này đều co thê ứng dung cho bất cứ ngôn ngư nào co thê truy cập các hàm API, chẳng han nhƣ Java, Assembly, và Visual Basic. Tài liêu này đƣợc biên soan không phải đê day các ban đôc giả lập trình bằng ngôn ngư C, hoăc day chu ng ta sư dung bất cứ môt trình biên dich cu thê nào (chẳng han nhƣ Borland C++, Visual C++, ) tuy nhiên trong phần phu luc tôi sẽ dành môt chu t đê cung cấp cho các ban môt số chu ý về môt số trình biên dich mà tôi đã sư dung.. Giới thiệu về môi trƣờng lập trình Windows. Cơ sở về hệ điều hành Windows Hê điều hành Windows là môt hê điều hành dành cho ngƣời du ng cuối (End User Operating System) với các tính năng cơ bản sau: đa nhiêm, giao diên đồ họa, plug and play và quan trọng nhất là Windows Interface Based - tức là giao diên các chƣơng trình chay trên Windows đều co dang các cư a sổ.. Các phiên bản của hệ điều hành Windows Do cách du ng tiếng Anh và viêc hiê u tiếng Anh dẫn tới viêc nhiều ngƣời hiê u về các phiên bản cu a hê điều hành Windows chƣa chính xác. Ví du co ban cho rằng Windows XP Professional Edition và Windows XP Home Edition là hai phiên bản khác nhau cu a hê điều hành Windows. Thực ra nhƣ vậy vừa đu ng lai vừa không đu ng, đu ng là Windows XP Professional Edition và Windows XP Home Edition là hai Edition khác nhau cu a cu ng Version Windows XP, co lẽ sai là vì hiê u từ Edition và Version sai. Version co nghĩa là môt phiên bản, thƣờng đi kèm với các số hiêu cu a phiên bản (.0,.. 5.0) và thƣờng là môt thay đổi lớn đối với bản thân phần mềm, ví du nhƣ đối với Windows thì co 3 thay đổi lớn: thay đổi về kiến tru c nền tảng cu a hê điều hành (tức là phần kernel cu a hê điều hành), hai là cập nhật các bản vá (patch) cho các lô i cu a phiên bản trƣớc đo đối với tất cả các phần cu a hê điều hành, ba là các phần mới cu a hê điều hành (co thê là các ứng dung đi kèm hoăc hô trợ thêm các công nghê mới, ví du nhƣ đối với Windows là chuẩn Wi-Fi, DVD, dot NET framework hay các ứng dung nhƣ Windows Media Player, IE ). Co n Edition là ấn bản khác nhau cu a cu ng môt phiên bản, các Edition thƣờng gắn với các yếu tố về đia lý, ngôn ngư khác nhau (ví du nhƣ Compact Edition nghĩa là bản ru t gọn, Standard Edition là bản chuẩn, Ultimate Edition là bản co các tính năng cao cấp nhất ). Đối với hê điều hành Windows các Edition khác nhau thƣờng phân biêt bởi các tính năng cu a chu ng, do nhắm tới viêc phuc vu các đối tƣợng khác nhau nên Microsoft bo đi môt số tính năng không cần thiết và tăng thêm các tính năng mà đối tƣợng ngƣời du ng hay du ng ví du nhƣ bản Home Edition nhắm tới ngƣời du ng gia đình nên các tính năng đồ họa, video, âm thanh phải tốt, co n bản Professional nhắm tới các ngƣời du ng chuyên nghiêp co trình đô cao nên các tính năng hê thống sẽ cao hơn. Windows co các phiên bản sau đây: Windows.0 Windows.03
Windows. Windows 3.0 Windows 3.x Windows For Workgroups 3. Windows NT 3. Windows For Workgroups 3. Windows 3. (released in Simplified Chinese only) Windows NT 3.5 Windows NT 3.5 Windows 95 Windows NT 4.0 Windows 98 Windows 98 SE Windows 000 Windows Me Windows XP Windows XP 64-bit Edition 003 Windows Server 003 Windows XP Professional x64 Edition Windows Fundamentals for Legacy PCs Windows Vista Windows Home Server Windows Server 008 Windows 7 Tất nhiên là mô i Version trên lai co nhiều Edition khác nhau. Phần nhân (Kernel Core) cu a hê điều hành luôn là phần quan trọng nhất cu a môt hê điều hành. Đối với Windows nhân gồm 3 thành phần: các dich vu chay ở mức nhân (kernel-mode service, đê phân biêt với các dich vu chay ở mức ứng dung) gồm các thƣ viên chính cu a hê điều hành, các thƣ viên thực hiên quản lý tiến trình, lập lich, quản lý vào ra dư liêu trên đĩa cứng, bô nhớ. Phần là các thƣ viên làm viêc với các phần cứng ở mức chung, phần 3 là các Diver..3 Vai trò của Windows trên thi trƣờng phần mềm Do sự thống tri cu a hãng Microsoft no i riêng và sự phổ biến gần nhƣ đôc tôn cu a hê điều hành Windows no i chung ở Viêt Nam nên Windows đo ng vai tro hết sức quan trọng trong viêc phát triê n phần mềm ở Viêt Nam. Về bản chất các chƣơng trình đều phải thực hiên trên môt nền tảng (platform) nhất đinh bao gồm các chi tiết từ phần cứng cho tới phần mềm, tuy nhiên đối với đa số ứng dung, các lập trình viên cần quan tâm nhiều nhất tới hê điều hành mà ứng dung sẽ chay.. Thƣ viện Win3 và Win64. Win3 API Win3 API hay thƣờng đƣợc viết tắt là Win3 là phiên bản 3 bit tƣơng ứng với hê điều hành 3 bit cu a Windows. Win3 bao gồm các hàm đƣợc cài đăt cu a hê thống, chẳng han nhƣ các hàm trong hê thống Win6 bit, dƣới dang các file thƣ viên DLL cu a hê thống. Lõi (core) cu a Win3 là các file thƣ viên kernel3.dll, user3.dll và gdi3.dll. Win3 đầu tiên đƣợc đƣa ra cùng với hê điều hành Windows NT. Phiên bản đầu tiên cu a Win3 đƣợc phát hành cu ng với hê điều hành Windows 95 (gọi là Win3c - compatible), và sau này chỉ co n là Win3. 3