nhiều phần mềm được viết ra giúp người đọc dễ hiểu, dễ dàng sử dụng thao tác với máy tính, và phần mềm Window Operator là 1 ví dụ.Với mong muốn tìm hiểu về sự tự động của phần mềm hỗ trợ
Trang 1TRƯỜNG ĐẠI HỌC KINH TẾ QUỐC DÂN
VIỆN CÔNG NGHỆ THÔNG TIN VÀ KINH TẾ SỐ
BÀI TẬP LỚN MÔN CÔNG NGHỆ ĐA PHƯƠNG TIỆN
Đề tài nghiện cứu: Xây dựng phần mềm tự động hướng dẫn sử dụng máy tính bằng việc mô phỏng tương tác của chuột và bàn phím thông qua hệ thống
thông điệp của Windows Operator.
GVHD: TS Phạm Minh Hoàn Lớp HP: CNTT1149_01 Nhóm Sinh viên: Nhóm 5
Trang 2Mục lục
Chương I Giới thiệu chung về đề tài 4
1 Vấấn đềề chung 4
2 Gi i thi u phấền mềềmớ ệ 4
3 Kềấ ho ch th c hi n th t đềề tàiạ ự ệ ứ ự 4
3.1 Tìm hi u th c tềấể ự 5
3.2 Mô t bài toán chi tềất đ nh thiềất kềấả ị 5
4.Tìm hi u vềề l p trình trong Windows và h thôấng thông đi p.ể ậ ệ ệ 5
4.1 L p trình trong Windowsậ 5
4.2 Thông đi p và h thôấng thông đi p.ệ ệ ệ 6
5 Tìm hi u ngôn ng l p trìnhể ữ ậ 11
5.1 Ngôn ng l p trình Pythonữ ậ 11
Chương II Xây dựng phần mềm 11
1 Bi u đôề.ể 11
1.1 Bi u đôề phấn cấấp ch c năng m c ng c nh.ể ứ ứ ữ ả 11
1.2 Mô t bài toán.ả 11
2 Viềất code 12
2.1 Python 12
3 Ki m traể 12
4 Kềất quả 15
Chương III Kết luận 17
Thành viên nhóm 5: Dương Minh Sơn Dương Danh Hải Nguyễn Ngọc Long Ma Thái Bảo Lưu Quốc Tuấn
Trang 3Bảng phân công công việc ST
LỜI MỞ ĐẦU
Cùng với sự phát triển của xã hội, máy vi tính đã bước vào từng góc của xã hộichúng ta, hơn nữa tác dụng của nó ngày càng được mở rộng, hiện nay nó đã trở thànhmột trợ thủ đắc lực cho cuộc sống cũng như công việc của mọi người
Việc tính toán trong lĩnh vực khoa học kĩ thuật, trong một số phép tính phức tạpthuộc lĩnh vực khoa học kĩ thuật hiện đại nếu dùng não người để tính toán thì rất khó
để thực hiện, còn nếu dùng máy tính thì chúng ta không chỉ tiết kiệm được thời gian
mà còn có những kết quả chính xác Xử lý các số liệu và công việc: điều này chủ yếu
là dựa vào khả năng phân tích và suy đoán của máy tính để giúp con người phân tíchthống kê một số số liệu thực tế Kiểm tra tự động và điều khiển tự động trong rất nhiềulĩnh vực người ta đã sử dụng máy vi tính để thực hiện việc phân biệt và điều khiển tựđộng, ví dụ như điều khiển tự động trong việc phóng tàu vũ trụ, trong lĩnh vực nhỏhơn, người ta sử dụng để điều khiển việc định giờ, số thứ tự cho các loại điện trong giađình Ngày nay, máy tính vô cùng cần thiết và quan trọng trong đời sống của conngười
Xã hội ngày càng hiện đại, công nghệ ngày càng phát triển vì thế máy tính càngđược sử dụng rộng rãi hơn bao giờ hết Tuy nhiên không phải đối tượng nào cũng biếtcách sử dụng máy tính một cách hiệu quả nhất ví dụ như người mới bắt đầu sử dụng,người có tuổi nhiều phần mềm được viết ra giúp người đọc dễ hiểu, dễ dàng sử dụng thao tác với máy tính, và phần mềm Window Operator là 1 ví dụ
Với mong muốn tìm hiểu về sự tự động của phần mềm hỗ trợ người dùng, chúng
em nhận thấy đây là đề tài vô cùng thú vị, thiết thực trong cuộc sống, chúng em muốn
sử dụng vốn kiến thức được học, trau dồi trước đó được áp dụng thực tiễn nhóm chúng
em lựa chọn đề tài:”Xây dựng phần mềm tự động hướng dẫn sử dụng máy tính bằng việc mô phỏng tương tác của chuột và bàn phím thông qua hệ thống thông điệp của Windows Operator.”
Mặc dù nhóm chúng em đã cố gắng tìm hiểu và hoàn thành bài tập trong phạm
Trang 4chúng em kính mong nhận được sự phản hồi, đóng góp ý kiến của thầy TS Phạm MinhHoàn _ giảng viên bộ môn Công nghệ đa phương tiện và của quý bạn bè Chúng emxin chân thành cảm ơn!
Qua tìm hiểu và phân tích thiết kế nhóm chúng em đưa ra bản báo cáo với nhữngnội dung chính như sau để người đọc dễ dàng theo dõi
Phần 1: Mở đầu
Phần 2: Nội dung
Chương I: Giới thiệu chung về đề tài
Chương II: Xây dựng phần mềm
Chương III: Kết luận
Chương I Giới thiệu chung về đề tài
- Giao diện đẹp, thoáng
- Dễ sử dụng đặc biệt với người mới bắt đầu
- Cung cấp chức năng đầy đủ
Trang 5 Ý nghĩa lý luận và thực tiễn của đề tài:
- Giúp nhóm ứng dụng vốn kiến thức được học, hiểu rõ quy trình xây dựngphần mềm
- Giúp cho người sử dụng thuận tiện dễ dàng sử dụng
2 Giới thiệu phần mềm
- Giới thiệu mô phỏng tương tác của chuột và bàn phím
- Dựa trên nguyên tắc đó tiến hành xây dựng phần mềm
3 Kế hoạch thực hiện thứ tự đề tài
3.1 Tìm hiểu thực tế
Theo như nghiên cứu của nhóm về tình hình thực tế hiện tại, máy tính tuy rấthữu dụng song cách sử dụng cũng chưa thực sự dễ dàng cho một số đối tượngnhư sau:
- Hiện nay trong thời kỳ covid nhiều học sinh đang trong độ tuổi cấp 1 chưathành thạo sử dụng máy tính, phần mềm này giúp các em có thể sử dụngmáy tính 1 cách hiệu quả và thành thục hơn
- Hiện nay ở các vùng quê xa thành phố những người con đi làm ăn xakhông thể ở bên ba mẹ thường xuyên Con mua máy tính cho ba mẹ ở quê
để liên lạc, giải trí ở quê phần mềm này giúp các phụ huynh dễ dàng làmquen với máy tính, giao diện khá đơn giản phù hợp với người lớn tuổi
- Một số đối tượng người sử dụng mới bắt đầu tiếp xúc với máy tính, trongquá trình cần dùng máy tính cần tìm hiểu nhanh, đang làm việc, học tập thìcũng có thể thao tác chính xác cách sử dụng máy tính, mà không cần phảitra cứu google về cách sử dụng Điều đó thực sự tiện lợi hơn bao giờ hết
3.2
Mô tả bài toán chi tiết định thiết kế
- Người dùng: khởi động hệ điều hành Windows Operator, xem bảng hướngdẫn tổng quan, tìm hiểu các ứng dụng, phần mềm thông qua tương tác giữachuột và bàn phím
Trang 6- Hệ thống: tiếp nhận các tín hiệu từ người dùng thông qua thao tác di chuột
và đưa ra thông tin hướng dẫn tổng quát nhất cho người dùng: như tên, chứcnăng, cách mở các ứng dụng, phần mềm đó
4.Tìm hiểu về lập trình trong Windows và hệ thống thông điệp.
4.1 Lập trình trong Windows
- Môi trường lập trình Windows về cơ bản là dựa trên bộ hàm API(Application Programmer Interface), nó có chức năng như các ngắt trongbảng vector ngắt của DOS, nhưng nó thân thiện hơn ở chỗ cách gọi hàmAPI giống hệt cách gọi hàm của ngôn ngữ cấp cao, mỗi hàm có một tên gọihẳn hoi, và tên gọi thường được đặt rất phù hợp với công dụng của hàm(mặc dù có hơi dài dòng) từ đó tạo khả năng gợi nhớ cao Với Windows,người lập trình không còn phải lập trình theo kiểu assembly(hợp ngữ) nữa
mà lập trình theo kiểu ngôn ngữ cấp cao, mọi hoạt động trong máy ở mứcthấp từ hàm API trở xuống thuộc phạm vi của Windows, và Windowskhông khuyến khích việc các ứng dụng can thiệp vào lĩnh vực này Bù lại,bằng các hàm API, nó hỗ trợ rất hiệu quả cho người lập trình, giúp khai tháckhả năng của thiết bị triệt để, dễ dàng và tiện lợi hơn bao giờ hết Có thể nóiWindows đã mở ra cho người lập trình không gian rộng lớn để phát triểnứng dụng, và hạn chế không gian phát triển hệ thống Điều này dẫn đến hệquả là các ứng dụng được tạo ra hết sức dễ dàng, và quan trọng là hệ thốngchạy ổn định hơn, không bị treo do lỗi của ứng dụng, không thể xâmnhập, nhưng sẽ rất khó khăn nếu người lập trình muốn trực tiếp điều khiểnhoạt động trong máy và phát triển về lập trình hệ thống
- Tìm hiểu hàm Windows API: Windows làmột hệ điều hành đa nhiệm(multitasking) mà qua đó các ứng dụng ở trong môi trường Windows sẽgiao tiếp với user thông qua một hay nhiều giao diện Để truy cập các giaodiện này thì các ứng dụng được xây dựng trên môi trường Windows sẽ
sử dụng tập các hàm được gọi là giao diện chương trình ứng dụng API(Application Program Interface) Chương trình của người sử dụng có thểgọi tới các hàm API để truy cập tới mọi tài nguyên của Windows GDI làmột bộ phận của API, giao diện thiết bị đồhọa GDI (Graphic DeviceInterface) có nhiệm vụ duy trì sự độc lập của Windows đối với các thiết bị
đồ họa hay còn gọi là khả năng độc lập thiết bị (device independent) tức làcho phép Windows làm việc với nhiều kiểu thiết bị đồ họa khác nhau.4.2 Thông điệp và hệ thống thông điệp trong Windows
Trang 74.2.1 Khái niệm.
Lập trình trên môi trường Windows khác với lập trình ở các môi trường khác ởđiểm lập trình trên Windows luôn luôn gắn liền với những thông điệp Mọi hoạtđộng xảy ra trên một chương trình Windows đều thông qua các thông điệp Thôngđiệp sẽ được hệ thống báo cho các ứng dụng biết các tác động từ bên ngoài vào hệthống Windows Một cửa sổ có thể gửi đi một thông điệp cho một cửa sổ khác vàcác cửa sổ đáp ứng lại thông điệp bằng cách gởi đi một thông điệp khác cho mộtcửa sổ khác
Trong Windows có 3 loại thông điệp cơ bản:
- Những thông điệp tổng quát: có mãn nhận diện mang tiền tố WM_được coi
là phần lớn trong ứng dụng và Windows đã cung cấp các hàm giải quyết
- Những control notification: đây là những thông điệp WM_COMMANDđược chuyển từ của sổ con tới cửa sổ mẹ
- Những nút lệnh: là thông điệp WM_COMMAND phát đi từ trình đơn, từ cácnút điều khiển Đây là loại thông điệp yêu cầu ứng dụng phải thực hiện mộtcông việc gì đó
4.2.2 Gửi đi các thông điệp.
Windows cho phép ứng dụng gửi đi những thông điệp cho chính mình, chocác ứng dụng khác hoặc cho hệ thống
Có 3 hàm Windows API để gửi thông điệp:
a Hàm SendMessage:
LRESULT SendMessage(hwnd, uMsg, wParam, lPram)
HWND hwnd; // handle của cửa sổ nhận(đích)
UINT uMsg; // thông điệp để gửi
WPARAM wParam; // thông số thông điệp đầu tiên
LPARAM lParam; // thông số thông điệp thứ hai
Trang 8- Hàm SendMessge gửi thông điệp tới một hay nhiều cửa sổ Hàm gọi thủ tụccửa sổ cho cửa sổ và không trở về cho đến lúc thủ tục cửa sổ đã xử lý xongthông điệp.
- Giá trị trả về: cho biết kết quả xử lý thông điệp và phụ thuộc vào thông điệpđược gửi
b Hàm PostMessage
Cú pháp:
BOOL PostMessage(hwnd, uMsg, wParam, lPram)
HWND hwnd; // handle của cửa sổ nhận(đích)
UINT uMsg; // thông điệp để gửi
WPARAM wParam; // thông số thông điệp đầu tiên
LPARAM lParam; // thông số thông điệp thứ hai
oHàm PostMessage gửi(đặt) một thông điệp vào trong hàng thôngđiệp cửa sổ và rồi trở về mà không đợi cửa sổ tương ứng xử lýthông điệp Những thông điệp trong một hàng thông điệp được lấybằng cách gọi hàm SetMessage hay PeekMessage
Giá trị trả về: trản về khác không nếu thành công, ngược lại 0
c Hàm SenDlgItemMessage:
Cú pháp:
LRESULT SenDlgItemMessage(hwnDlg, idDlgItem, uMsg, wParam,lParam)
HWND hwnDlg; // handle của hộp thoại
Int idDlgItem; // mã nhận diện ô điều khiển sẽ nhận thông điệpUINT uMsg; // thông điệp gửi đi
WPRAM wParam; // thông số thông điệp đầu tiên
LPARAM lParam; // thông số thông điệp thứ hai
Trang 9Hàm SenDlgItemMessage gửi một thông điệp tới một điều khiển trong hộpthoại.
Giá trị trả về: cho biết kết quả xử lý thông điệp và phụ thuộc vào thông điệpđược gửi
4.2.3 Vòng lặp thông điệp.
Một thread hoặc một process đẩy một thông điệp ra khỏi hàng đợi bằng cáchdùng vòng lặp thông điệp Vòng loop chính của một ứng dụng đặt tại cuốihàm WinMain() của ứng dụng đó Vòng lặp thông điệp có dạng như sau:
While GetMessage(&msg, NULL, 0, 0) {
Trang 10- Nó mô tả đơn giản hóa quá trình xử lý thông điệp Thông điệp có thể bắtnguồn từ nhiều cách khác nhau, sơ đồ sau đây sẽ giải thích chi tiết hơn vềvòng lặp thông điệp và chỉ ra các thông điệp được đặt vào hàng đợi nhưthế nào:
Trang 11- Thông điệp không chỉ phát xuất từ sự kiện phần cứng, cũng có thể cóthông điệp của chương trình phát xuất từ một chương trình đang chạy Cácthreads có thể gởi dữ liệu trở về sau và về trước bằng cách gởi thông điệp.Thông điệp có thể gởi vào hàng đợi bằng hàm PostMessage() , hoặc chúng
có thể được gởi trực tiếp cho vòng lặp thông điệp để xử lý ngay lập tức bằnghàm SendMessage()
4.2.4 Xử lý thông điệp.
- Việc xử lý thông điệp là yếu tố chính làm cho các ứng dụng Windowsvận hành được Hệ thống và các ứng dụng khác sinh ra các thông điệp chomọi sự kiện xuất hiện trong hệ thống thông điệp của Windows sẽ cho phépWindows chạy đa nhiệm trong một thời điểm
- Windows 95 và Windows NT mở rộng khả năng của version Windowstrước bằng việc cấp phát cho mỗi dòng xử lý (thread) hay mỗi tiến trình(proccess) một hàng đợi thông điệp riêng Trong version Windows cũ thì tất
cả ứng dụng đều dùng chung một hàng đợi thông điệp, vì thế để các ứngdụng khác xử lý thông điệp, ứng dụng phải trả quyền điều khiển về choWindows mỗi khi nó có thể Với Windows 95 và Windows NT, điều nàykhông còn nữa Windows sinh ra thông điệp cho mọi sự kiện phần cứng, ví
dụ như người dùng nhấn một phím hoặc di chuyển chuột Nó gởi thôngđiệp đến hàng đợi thông điệp của thread thích hợp, nếu thông điệp đượcdành cho nhiều thread thì nó cũng được đưa vào các hàng đợi của các threadđó
Một thông điệp trên thực tế là một cấu trúc dữ liệu như sau:
Typedef struct tagMSG {
HWND hwd; // handle cửa sổ
UINT message; // số chỉ định loại message
WPARAM wPram; // được chuyển cho WndProc()
LPARAM lPram; // được chuyển cho WndProc()
DWORD time; // số mili giây từ lúc bắt đầu
POINT pt; // cấu trúc điểm POINT
}
Trang 124.3 Giới thiệu lập trình Windows API
- Windows API (WinAPI, hay nhiều nơi vẫn dùng tên cũ là Win32 API) là các hàm thư viện và các định nghĩa khác (struct, enum,…) được Windows cung cấp cho người lập trình, để viết các ứng dụng trên nền Windows
- Hệ điều hành Windows là một phần mềm hệ thống, nó thao tác trực tiếp với phần cứng máy tính Các phần mềm ứng dụng khác chạy trên Windows không thao tác trực tiếp với phần cứng, mà luôn trung gian qua hệ điều hành
Ví dụ khi gõ phím, hệ điều hành là nơi nhận tín hiệu và xử lý xem nó là phím
gì, sau đó, hệ điều hành mới xác định xem phím được gõ trên ứng dụng nào, thì mới gởi tín hiệu đến ứng dụng đó để nó xử lý, thông qua các hàm bạn đã viết trong ứng dụng
- Windows API là giao diện lập trình nằm ngay trên nền Windows, cung cấp các hàm thao tác trực tiếp với hệ điều hành và phần cứng máy tính Các ứng dụng Windows sẽ thông qua Windows API để thao tác với máy tính
.Net và
Win32
Trang 13- Windows API là cách gọi chung của Win16 API, Win32 API và gần đây
là Win64 API Ở một số chỗ, người ta vẫn hay gọi Win32 API để chỉ lập trình Windows API Lý do là trước đây và thậm chí cho đến ngày nay, Windows 32 bit được sử dụng rộng rãi Tuy nhiên, khi nói đến Windows API hay Win32 API, bạn phải hiểu nó bao gồm cả Win64 API, vì các APIcủa Win64 hầu hết giống hệt Win32 API, chỉ có điểm khác chính ở kích thước con trỏ Ngoài ra, các ứng dụng viết từ Win32 API vẫn chạy tốt trên các máy 64 bit
- Gần đây, Microsoft giới thiệu thêm WinRT (Windows Runtime Library, khác Windows RT cho các máy kiến trúc ARM nhé) cho các ứng dụng metro trên store Nhưng nó không thay thế hoàn toàn Windows API nhất
là khi bạn viết các ứng dụng Desktop, hay cần thao tác trực tiếp với hệ thống
- Windows API được viết chủ yếu bằng C Cách hiệu quả nhất để sử dụng Windows API là dùng C hoặc C++ Tuy nhiên, bạn cũng có thể sử dụng các ngôn ngữ khác như C#.NET, VB.NET, Delphi, thậm chí cả Java
4.3.1 WINDOWS API VÀ NET FRAMEWORK
- Ngày nay, để viết các ứng dụng trên Windows nhanh chóng và hiệu quả, chúng ta
sử dụng NET Framework là chủ yếu .NET Framework cũng cung cấp các thư viện để viết ứng dụng trên nền Windows, và càng ngày càng làm được nhiều việc thay thế Windows API Nhưng nó khác Windows API ở các điểm chính:
NET Framework chỉ là wrapper gọi lại các hàm Windows API, tức là, nếu bạn gọi một phương thức NET nào đó, nó sẽ gọi lại các hàm Windows API có chức năng tương ứng để thực hiện, chứ không thao tác trực tiếp đến hệ điều hành
Thông qua Mono, các ứng dụng viết trên NET Framework có thể chạy được trên Linux, Mac,… còn Windows API thì không
Vẫn có một số thao tác cấp thấp với hệ thống không làm được với NET Framework
4.3.2 THÀNH PHẦN CỦA WINDOWS API
Các hàm API có thể được chia thành một số loại chính: