Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 86 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
86
Dung lượng
0,91 MB
Nội dung
Luận văn
Nghiên cứu các phương
pháp nhậndạng từ dưới
cursor mousetrên
Desktop Windows
Báo Cáo LuậnVăn Tốt Nghiệp Trang 1
Đề tài : Nghiêncứucác phương phápnhận
dạng từ dướicursormousetrênDesktop
Windows.
Viết chương trình nhậndạngtừ này.
Lời Mở Đầu
gày nay, hầu như mọi công việc hàng ngày liên quan đến cuộc sống của
chúng ta đều diễn ra trên máy tính. Từ việc soạn thảo văn bản, gởi nhận
thông tin đến việc tra cứu, truy cập thông tin từ hệ thống mạng máy tính
tồn cầu Internet đối với người sử dụng là công việc thường ngày và rất phổ biến.
Từ đó, sẽ phát sinh vấn đề là người sử dụng sẽ cần tìm hi
ểu ý nghĩa của một
từ, một câu hoặc cần phải dịch một đoạn văn bản, một file dữ liệu nào đó ra tiếng
Việt và ngược lại. Đây là một nhu cầu cần thiết và hầu như xảy ra thường xuyên đối
với nhiều người, do đó nhậndạngtừ đặc biệt là nhậndạngtừtrên màn hình trong
môi trường Windows là việc làm cần thiế
t và có ý nghĩa thực tế.
Kết quả của việc nhậndạngtừ sẽ được dùng để xây dựng nên các ứng dụng
khác chẳng hạn như cáctừ điển được tra cứu theo kiểu tương tác trực tiếp sẽ rất
thuận tiện cho người sử dụng bởi vì theo cách này thì cho dù đang ở trong bất kỳ
ứng dụng nào khi cần tra cứu thì thao tác trực tiếp ngay trên ứng dụng đ
ang dùng
tức là chỉ cần click chuột vào đó chứ không cần phải mở từ điển rồi tra cứutừ đó
theo kiểu cổ điển.
Vì thế, trong thời gian làm Luận Án Tốt nghiệp được sự hướng dẫn của thầy
Lê Tấn Hùng nhóm sinh viên chúng tôi thực hiện đề tài: “ Nhậndạngtừdướicursor
mouse trên deskop Windows. Viết chương trình nhậndạngtừ này ”. Trong giai
đoạn đầ
u của Luận Án Tốt Nghiệp chúng tôi đã nghiêncứu được một số vấn đề
quan trọng và căn bản có ý nghĩa trong việc thực hiện yêu cầu đã đặt ra của đề tài.
Đề tài này chỉ tập trung nhậndạngtừ ở dạng text trêndesktop của môi trường
Windows rồi xuất kết quả ra.
Trong thời gian làm Luận Án Tốt Nghiệp nhóm sinh viên chúng tôi đã tiến
hành nghiêncứu cơ chế hoạt động và qu
ản lý của hệ điều hành Windows. Nghiên
cứu về phương thức lập trình trong môi trường Windows và cácphương tiện mà
Windows hỗ trợ khi lập trình. Tham khảo và nghiêncứu kỹ thuật override các hàm
Báo Cáo LuậnVăn Tốt Nghiệp Trang 2
giao tiếp của Windows ở chế độ 16 bit và 32 bit. Nghiêncứu cách xử lý các thông
điệp trong Windows và tìm hiểu về cách kết xuất văn bản, về chế độ ánh xạ, vấn đề
tọa độ . . . và cách xử lý văn bản. Trên cơ sở đó bước đầu chúng tôi đã xây dựng
xong một ứng dụng có khả năng nhậndạng được từtrên nền Windows 16 bit được
viết bằng ngôn ngữ Visual C++ version 1.5 và hướng phát triể
n trong thời gian tới
là hiện thực nó trên nền Win32.
Báo cáo của chúng tôi sẽ lần lượt điểm qua những nội dung mà chúng tôi đã
nghiên cứu và tìm hiểu được trong thời gian qua. Sau đó là phần giới thiệu chi tiết
về chương trình từ khâu phân tích-thiết kế cho đến phần chương trình nguồn và cuối
cùng sẽ là nêu những vấn đề còn tồn tại và hướng phát triển trong tương lai.
Báo Cáo LuậnVăn Tốt Nghiệp Trang 3
Chương 1:
T
T
Ì
Ì
M
M
H
H
I
I
Ể
Ể
U
U
V
V
Ề
Ề
L
L
Ậ
Ậ
P
P
T
T
R
R
Ì
Ì
N
N
H
H
W
W
I
I
N
N
D
D
O
O
W
W
S
S
Báo Cáo LuậnVăn Tốt Nghiệp Trang 4
I - KHÁI QUÁT VỀ LẬP TRÌNH TRONG WINDOWS:
1 - Khái quát về 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 trong bảng vector ngắt của
DOS, nhưng nó thân thiện hơn ở chỗ cách gọi hàm API 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ọi hẳ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
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ức thấp
từ hàm API trở xuống thuộc phạm vi của Windows, và Windows khô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ác khả 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ói Windows đã 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ống chạy ổn định hơn, không bị treo do lỗi của ứng dụng,
không thể xâm nhậ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ển hoạ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 giao diệ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 Device Interface) 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.
2 - Thư viện liên kết động DLL (Dynamic Link Library):
Thư viện liên kết động là các tập tin được Windows lưu dướidạng nhị phân
chứa các hàm mà mọi ứng dụng trênWindows đều có thể sử dụng. Nét đặc trưng
của DLL là nó có thể được sử dụng bởi nhiều ứng dụng tại cùng một thời điểm hay
nói cách khác thư viện liên kết động có thể cùng một lúc được gọi bởi nhiều chương
trình. DLL là một dữ liệ
u chia sẻ được (shared data).
Có 3 loại DLL khác nhau:
Báo Cáo LuậnVăn Tốt Nghiệp Trang 5
- Thư viện liên kết động API: thuộc hệ thống Windows, khi cài hệ điều hành
thì nó đã có sẵn. Chúng được nạp khi Windows khởi động.
- Thư viện liên kết động third party: do các công ty khác tạo ra trên môi
trường Windows, hỗ trợ thêm công tác lập trình trong Windows.
- Thư viện liên kết động do chúng ta tạo ra.
Windows sử dụng cấu trúc thư viện liên kết động DLL (Dynamic Link
Library) nhằm mục đích không sao chép một khối lượng lớn các mã vào trong
chương trình như ở
các thư viện thông thường. Nhờ cấu trúc động của DLL nên mọi
chương trình đều có thể truy cập thư viện trong thời gian thực thi. Các hàm API
được Windows giữ dướidạng hỗn hợp trong một số DLL. Trong quá trình dịch khi
gặp lệnh gọi hàm API từ chương trình ứng dụng thì chương trình dịch không thêm
mã này vào module thực hiện mà chỉ thêm các lệnh liên kết (chứa tên của DLL bên
trong có hàm cần nạp) và tên hàm đó. Khi thực thi chương trình thì hàm API thực
sự
mới được nạp vào bộ nhớ để thực hiện.
Cùng với sự phát triển của Windows là sựï phát triển của lập trình hướng đối
tượng, và để hỗ trợ cho việc lập trình hướng đối tượng, Microsoft đã cung cấp cho
người lập trình một bộ thư viện các lớp cơ bản để phát triển các ứng dụng hướng
đối tượng gọi là MFC (Microsoft Foundation Classes), nội dung của nó bao gồ
m
thông tin về các lớp cơ bản được chuẩn hóa như lớp application; document; view;
OLE; cửa sổ; nút bấm; text; v.v…, trong các lớp này mọi thứ liên quan đến nó (bao
gồm dữ liệu và các chương trình xử lý của nó) đều được làm hồn chỉnh, người lập
trình chỉ việc lấy ra sử dụng, hoặc có thể thêm bớt một ít tính năng đặc trưng cho
đối tượng của mình. Mục tiêu chính của MFC là hệ thống hóa các hàm API, cung
cấp mộ
t thể thức gọi gọn các hàm API, cung cấp một “khung làm việc”
(framework) cực mạnh để người lập trình không cần phải quan tâm đến những đoạn
chương trình thuộc về “thủ tục” mà chỉ cần quan tâm đến phần cốt lõi để đạt được
mục đích.
II - THÔNG ĐIỆP VÀ XỬ LÝ THÔNG ĐIỆP:
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à lập trình trênWindows 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 ngồ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ột
cửa sổ khác.
Báo Cáo LuậnVăn Tốt Nghiệp Trang 6
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ã 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ổ bố mẹ.
- Những nút lệnh: là thông điệp WM_COMMAND phát đi từ trình đơn, từcác
nú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ột công
việc gì đó.
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 mình, cho các ứng
dụng khác hoặc cho hệ thống.
Có 3 hàm Windows API để gởi thông điệp đi:
a) Hàm SendMessage:
Cú pháp:
LRESULT SendMessage(hwnd, uMsg, wParam, lParam)
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
- Hàm SendMessage gởi thông điệp tới một hay nhiều cửa sổ. Hàm gọi thủ tục
cửa sổ cho cửa sổ và không trở về cho đến lúc thủ tục cửa sổ đã xử lý thô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, lParam)
HWND hwnd; // handle của của sổ đí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
- Hà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ấy bằng cách gọi hàm SetMessage hay
PeekMessage.
Báo Cáo LuậnVăn Tốt Nghiệp Trang 7
- Giá trị trả về: trả về khác 0 nếu thành công, ngược lại 0.
c) Hàm SendDlgItemMessage:
- Cú pháp:
LRESULT SendDlgItemMessage(hwndDlg,idDlgItem,uMsg,wParam,lParam)
HWND hwndDlg; // handle của hộp hội thoại
int idDlgItem; // mã nhận diện ô điều khiển sẽ nhận thông điệp
UINT uMsg; // thông điệp gởi đi
WPARAM wParam; // thông số thông điệp đầu tiên
LPARAM lParam; // thông số thông điệp thứ hai
- Hàm SendDlgItemMessage gởi một thông điệp tới một điều khiển trong hộp
hội thoạ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.
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ách
dù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ối hà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)
{ TranslateMessage(&msg);
DispatchMessage(&msg);
}
Sau đây là Sơ đồ dòng thông điệp:
Thread1 Message Queue Thread2 Message Queue Thr ead3 Message Queue
System Dispatcher
Hardware Event Occur
System Message Queue
GetMessage()
Tr ansl at eMessage( )
Dispatch Message( )
GetMessage()
Tr ansl at eMessage( )
Dispatch Message( )
GetMessage()
Tr ansl at eMessage( )
Dispatch Message( )
Thread1 Hook Thread2 Hook Thread3 Hook
System Dispatcher
Báo Cáo LuậnVăn Tốt Nghiệp Trang 8
Nó mô tả đơn giản hóa quá trình xử lý thông điệp. Thông điệp có thể bắt
nguồ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ách thông điệp được đặt vào hàng đợi như thế nào:
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ác threads 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ằng hàm SendMessage().
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 cho mọi sự kiện
xuất hiện trong hệ thống thông điệp của Windows sẽ cho phép Windows 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 Windows trướ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 ứng dụng
Hardware Events
Message Sent
From Other Threads
System Dispatcher
System Message Queue
Thr ead Message Queue
WndProc()
Message Loop
PostMessage()
TranslateMessage()
SentMessage()
SentMessage()
(To Another Thread)
Other thr eads
PostMessage()
Ot h er t hr ead s
PostMessage()
Báo Cáo LuậnVăn Tốt Nghiệp Trang 9
khác xử lý thông điệp, ứng dụng phải trả quyền điều khiển về cho Windows mỗi khi
nó có thể. Với Windows 95 và Windows NT, điều này khô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 được dà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 wParam; //được chuyển cho WndProc()
LPARAM wParam; //đượ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
}
III - GIAO DIỆN THIẾT BỊ ĐỒ HỌA GDI
(GRAPHIC DEVICE INTERFACE):
1 - Khái niệm:
Windows là một hệ điều hành đa nhiệm (multitasking) trong đó các ứng dụng
giao tiếp với user thông qua một hay nhiều giao diện. Để truy xuất các giao diện thì
chương trình ứng dụng phải sử dụng các hàm Giao diện chương trình ứng dụng.
API là tập các lệnh mà một ứng dụng sử dụng để yêu cầu và tiến hành các dịch vụ
cấp thấp được thi hành bởi Windows.
Giao diện thiết bị đồ h
ọa GDI (Graphic Device Interface) là một phần của API
có nhiệm vụ duy trì sự độc lập của Windows đối với các thiết bị đồ họa (cho phép
Windows làm việc với nhiều thiết bị đồ họa khác nhau). Windows GDI là một thư
viện bao gồm một số hàm giúp kết xuất đồ họa (graphic output) lên màn hình, máy
in…GDI sẽ tạo ra: điểm, đường kẻ, hình dạng (shape: chữ nhật, tròn…), chữ văn
bản.
2 - Device Context:
Ngữ cảnh thiết bị DC (Device Context) là một phần quan trọng của GDI
Windows. Một DC là một cấu trúc dữ liệu dài khoảng 800 bytes được Windows duy
trì có nhiệm vụ lo lưu giữ những thông tin cần thiết mà ứng dụng sẽ cần đến khi
phải hiển thị kết xuất lên một thiết bị vật lý. GDI không bao giờ cho phép chương
trình làm việc trực tiếp với một DC mà GDI phân phối cho chương trình một handle
[...]... các kết xuất và nhậncác dữ liệutừ người dùng Windows quản lý tất cả cửa sổ hiện có trong hệ thống bằng cách gán cho mỗi cửa sổ một handle (trên thực tế nó là một số nguyên)ø, ta chỉ cần có được handle cửa sổ thì có thể thao tác mọi thứ trên cửa sổ đó Một cửa sổ chia sẻ màn hình với các cửa sổ khác, kể cả các cửa sổ của ứng dụng khác Chỉ có một cửa sổ trong một thời điểm có thể nhận dữ liệu nhập từ. .. CHƯƠNG TRÌNH WINDOWS TIẾP NHẬN THÔNG ĐIỆP CHUỘT: Giới thiệu dòng chảy dữ liệu thông điệp nhập từ con chuột: Hardware event queue Virtual & Scan code Mouse Device driver Hook chain GetMessage() DispatchMessage() WindowProc() DefWindowProc() Báo Cáo LuậnVăn Tốt Nghiệp Trang 19 1 - Mouse: Khi mouse báo vị trí của mình (vị trí cursor) và có tác động lên mouse thì một tín hiệu được phát đi từmouse gây ra...Báo Cáo LuậnVăn Tốt Nghiệp Trang 10 để nhận dạng một DC cụ thể Tất cả các hàm API; GDI đều nhận thông số đầu tiên là một handle – hdc DC là một công cụ chứa các thuộc tính vẽ, DC cho phép kết nối logic một chương trình về một thiết bị cụ thể nào đó Ngồi ra do Windows là một hệ điều hành đa nhiệm nên các chương trình không thể truy xuất trực tiếp các thiết bị vật lý để tránh xung... đi từmouse gây ra một ngắt quãng, mouse driver giải quyết ngắt quãng này 2 - Mouse device driver: Khi Windows khởi động thì mouse driver tự động nạp vào và kiểm tra xem có chuột hay không Nếu có thì Windows gọi driver cung cấp một thủ tục để báo cáo các biến cố xảy ra trên chuột Khi có một mouse event thì driver thông báo cho Windows biết Nếu event là di chuyển mouse thì ưu tiên đáp ứng vị trí con... DefWindowProc() lo tìm vị trí cursor và cung cấp một hit-test code như là trị trả về Báo Cáo LuậnVăn Tốt Nghiệp Trang 20 Khi DefWindowProc() trả về kết quả khác HTCLIENT, HTERROR, HTNOWHERE, HTTRANSPARENT thì cursor nằm trên vùng non-client thì Windows sẽ phát đi thông điệp non-client Còn khi DefWindows trả về kết quả HTCLIENT thì cursor nằm trên vùng client và những thông điệp do Windows phát đi lúc này... WM_NCHITTEST và WM_SETCURSOR bao giờ cũng đi trước một thông điệp chuột Vì Windows phải tìm ra xem vị trí cursor hiện ở trong vùng client hay vùng non-client để phát ra thông điệp vùng client hay thông điệp vùng non-client một cách thích hợp Một khi đã được nhận diện thì Windows phải đảm bảo là người sử dụng nhận được hình dángcursor thích hợp Windows cho phép đặt message hook để thay đổi dòng chảy các thông... cho hiện lên như các thông điệp WM_SYSCOMMAND Cuối cùng DefWindowProc() giải quyết các thông điệp WM_NCHITTEST và WM_SETCURSOR cung cấp trước cho các thông điệp chuột khác Báo Cáo LuậnVăn Tốt Nghiệp Trang 22 Chương 2: TÌM HIỂU VỀ HOOKS Báo Cáo LuậnVăn Tốt Nghiệp Trang 23 Hook là một cơ chế cực mạnh cho phép ta cài đặt một thủ tục để điều khiển hoặc chận hứng các thông điệp trước khi các thông điệp... hiển thị); yêu cầu thực hiện một vài hành động trên cửa sổ hay vùng client của nó (cập nhật vùng client); thông tin về tình trạng của nó trong mối quan hệ với các cửa sổ khác (truy xuấ nhất định thất bại của nó tới bàn phím hay trở thành cửa sổ hoạt động) Một thủ tục cửa sổ nhận hầu hết các thông điệp là từWindows nhưng nó cũng có thể nhận thông điệp từcác cửa sổ khác gồm cả những cửa sổ nó sở hữu... hàng thông điệp hệ thống Hook này có ích cho việc ghi các macro - WH_KEYBOARD hook quản lý các thông điệp keystroke - WH_KEYBOARD_LL Windows NT: hook quản lý những sự kiện nhập vào từ keyboard mức thấp - WH _MOUSE hook quản lý các thông điệp chuột - WH _MOUSE_ LL Windows NT: hook quản lý những sự kiện đầu vào chuột mức thấp - WH_MSGFILTER hook quản lý các thông điệp được kết sinh như là một kết quả cuả... với các hàm giao tiếp trong môi trường Windows thì khi Windows gọi đến các DLL (Dynamic Link Library – Thư viện liên kết động) tạicác điểm nhập của các hàm Kernel, User, GDI… để xử lý các hàm được gọi trong ứng dụng thì chính ở thời điểm này ta có thể chen vào để có thể thực hiện việc hồn tất bất kỳ thao tác xử lý gì Việc chen vào ở thời điểm đó sẽ có 2 cách như sau dựa vào thời điểm để chen vào: - Cách .
Luận văn
Nghiên cứu các phương
pháp nhận dạng từ dưới
cursor mouse trên
Desktop Windows
Báo Cáo Luận Văn Tốt Nghiệp Trang 1
Đề tài. Trang 1
Đề tài : Nghiên cứu các phương pháp nhận
dạng từ dưới cursor mouse trên Desktop
Windows.
Viết chương trình nhận dạng từ này.
Lời