Siêu thị PDFTải ngay đi em, trời tối mất

Thư viện tri thức trực tuyến

Kho tài liệu với 50,000+ tài liệu học thuật

© 2023 Siêu thị PDF - Kho tài liệu học thuật hàng đầu Việt Nam

Nghiên cứu các phương pháp nhận dạng từ dưới cursor mouse trên desktop windows.doc
MIỄN PHÍ
Số trang
98
Kích thước
387.4 KB
Định dạng
PDF
Lượt xem
937

Nghiên cứu các phương pháp nhận dạng từ dưới cursor mouse trên desktop windows.doc

Nội dung xem thử

Mô tả chi tiết

Baùo Caùo Luaän Vaên Toát Nghieäp Trang 1

MUÏC LUÏC

LÔØI MÔÛ ÑAÀU 3

CHÖÔNG 1: TÌM HIEÅU VEÀ LAÄP TRÌNH WINDOWS 4

I. Khaùi quaùt veà laäp trình trong Windows 5

II. Thoâng ñieäp vaø xöû lyù thoâng ñieäp 7

III. Giao dieän thieát bò ñoà hoïa GDI 11

IV. Cöûa soå trong Windows 15

V. Chöông trình Windows tieáp nhaän thoâng ñieäp chuoät 22

CHÖÔNG 2: TÌM HIEÅU VEÀ HOOK 26

1 - Chuoãi hook 27

2 - Thuû tuïc hook 27

3 - Caùc loaïi hook 28

4 - Söû duïng hook 30

5 - Hook trong Windows 3.x 31

6 - Giôùi thieäu moät soá haøm lieân quan ñeán hook 33

CHÖÔNG 3: KYÕ THUAÄT OVERRIDE HAØM API 36

I. Khaùi quaùt veà kyõ thuaät override 37

II. Lyù do söû duïng kyõ thuaät override trong laäp trình Windows 37

III. Cô cheá hoaït ñoäng vaø quaûn lyù boä nhôù treân Windows 16bits 38

IV. Cô cheá hoaït ñoäng vaø quaûn lyù boä nhôù treân Windows 32bits 41

V. Hieän thöïc kyõ thuaät override treân Windows 16bits 45

VI. Moät soá haøm ñöôïc söû duïng trong kyõ thuaät override 50

CHÖÔNG 4: KEÁT XUAÁT VAÊN BAÛN TRONG WINDOWS 54

I. Keát xuaát vaên baûn trong Windows 55

II. Caùc haøm caên baûn ñeå keát xuaát vaên baûn 55

CHÖÔNG 5: PHAÂN TÍCH VAØ THIEÁT KEÁ CHÖÔNG TRÌNH 66

I. Phaân tích vaán ñeà 67

II. Thieát keá chöông trình 68

III. Giôùi thieäu moät soá haøm coù lieân quan 78

IV. Giôùi thieäu moät soá caáu truùc döõ lieäu coù lieân quan 92

KEÁT QUAÛ VAØ HÖÔÙNG PHAÙT TRIEÅN 97

SVTH : Löông Cao Hoaøi Taâm Lôùp TH40

Baùo Caùo Luaän Vaên Toát Nghieäp Trang 2

Ñeà taøi : Nghieân cöùu caùc phöông phaùp

nhaän daïng töø döôùi cursor mouse treân

Desktop Windows.

Vieát chöông trình nhaän daïng töø naøy.

SVTH : Löông Cao Hoaøi Taâm Lôùp TH40

Baùo Caùo Luaän Vaên Toát Nghieäp Trang 3

Lôøi Môû Ñaàu

gaøy nay, haàu nhö moïi coâng vieäc haøng ngaøy lieân quan ñeán cuoäc soáng

cuûa chuùng ta ñeàu dieãn ra treân maùy tính. Töø vieäc soaïn thaûo vaên baûn, gôûi

nhaän thoâng tin ñeán vieäc tra cöùu, truy caäp thoâng tin töø heä thoáng maïng maùy tính

toaøn caàu Internet ñoái vôùi ngöôøi söû duïng laø coâng vieäc thöôøng ngaøy vaø raát phoå

bieán.

Töø ñoù, seõ phaùt sinh vaán ñeà laø ngöôøi söû duïng seõ caàn tìm hieåu yù nghóa cuûa

moät töø, moät caâu hoaëc caàn phaûi dòch moät ñoaïn vaên baûn, moät file döõ lieäu naøo ñoù ra

tieáng Vieät vaø ngöôïc laïi. Ñaây laø moät nhu caàu caàn thieát vaø haàu nhö xaûy ra thöôøng

xuyeân ñoái vôùi nhieàu ngöôøi, do ñoù nhaän daïng töø ñaëc bieät laø nhaän daïng töø treân

maøn hình trong moâi tröôøng Windows laø vieäc laøm caàn thieát vaø coù yù nghóa thöïc teá.

Keát quaû cuûa vieäc nhaän daïng töø seõ ñöôïc duøng ñeå xaây döïng neân caùc öùng

duïng khaùc chaúng haïn nhö caùc töø ñieån ñöôïc tra cöùu theo kieåu töông taùc tröïc tieáp

seõ raát thuaän tieän cho ngöôøi söû duïng bôûi vì theo caùch naøy thì cho duø ñang ôû trong

baát kyø öùng duïng naøo khi caàn tra cöùu thì thao taùc tröïc tieáp ngay treân öùng duïng

ñang duøng töùc laø chæ caàn click chuoät vaøo ñoù chöù khoâng caàn phaûi môû töø ñieån roài

tra cöùu töø ñoù theo kieåu coå ñieån.

Vì theá, trong thôøi gian laøm Luaän AÙn Toát nghieäp ñöôïc söï höôùng daãn cuûa

thaày Leâ Taán Huøng nhoùm sinh vieân chuùng toâi thöïc hieän ñeà taøi: “ Nhaän daïng töø

döôùi cursor mouse treân deskop Windows. Vieát chöông trình nhaän daïng töø naøy ”.

Trong giai ñoaïn ñaàu cuûa Luaän AÙn Toát Nghieäp chuùng toâi ñaõ nghieân cöùu ñöôïc moät

soá vaán ñeà quan troïng vaø caên baûn coù yù nghóa trong vieäc thöïc hieän yeâu caàu ñaõ ñaët

ra cuûa ñeà taøi. Ñeà taøi naøy chæ taäp trung nhaän daïng töø ôû daïng text treân desktop cuûa

moâi tröôøng Windows roài xuaát keát quaû ra.

Trong thôøi gian laøm Luaän AÙn Toát Nghieäp nhoùm sinh vieân chuùng toâi ñaõ tieán

haønh nghieân cöùu cô cheá hoaït ñoäng vaø quaûn lyù cuûa heä ñieàu haønh Windows.

Nghieân cöùu veà phöông thöùc laäp trình trong moâi tröôøng Windows vaø caùc phöông

tieän maø Windows hoã trôï khi laäp trình. Tham khaûo vaø nghieân cöùu kyõ thuaät

override caùc haøm giao tieáp cuûa Windows ôû cheá ñoä 16 bit vaø 32 bit. Nghieân cöùu

caùch xöû lyù caùc thoâng ñieäp trong Windows vaø tìm hieåu veà caùch keát xuaát vaên baûn,

veà cheá ñoä aùnh xaï, vaán ñeà toïa ñoä . . . vaø caùch xöû lyù vaên baûn. Treân cô sôû ñoù böôùc

ñaàu chuùng toâi ñaõ xaây döïng xong moät öùng duïng coù khaû naêng nhaän daïng ñöôïc töø

treân neàn Windows 16 bit ñöôïc vieát baèng ngoân ngöõ Visual C++ version 1.5 vaø

höôùng phaùt trieån trong thôøi gian tôùi laø hieän thöïc noù treân neàn Win32.

Baùo caùo cuûa chuùng toâi seõ laàn löôït ñieåm qua nhöõng noäi dung maø chuùng toâi

ñaõ nghieân cöùu vaø tìm hieåu ñöôïc trong thôøi gian qua. Sau ñoù laø phaàn giôùi thieäu chi

tieát veà chöông trình töø khaâu phaân tích-thieát keá cho ñeán phaàn chöông trình nguoàn

SVTH : Löông Cao Hoaøi Taâm Lôùp TH40

Baùo Caùo Luaän Vaên Toát Nghieäp Trang 4

vaø cuoái cuøng seõ laø neâu nhöõng vaán ñeà coøn toàn taïi vaø höôùng phaùt trieån trong töông

lai.

SVTH : Löông Cao Hoaøi Taâm Lôùp TH40

Baùo Caùo Luaän Vaên Toát Nghieäp Trang 5

Chöông 1:

TÌM HIEÅU VEÀ TÌM HIEÅU VEÀ

LAÄP TRÌNH WINDOWS

SVTH : Löông Cao Hoaøi Taâm Lôùp TH40

Baùo Caùo Luaän Vaên Toát Nghieäp Trang 6

I - KHAÙI QUAÙT VEÀ LAÄP TRÌNH TRONG WINDOWS:

1 - Khaùi quaùt veà laäp trình trong Windows:

Moâi tröôøng laäp trình Windows veà cô baûn laø döïa treân boä haøm API

(Application Programmer Interface), noù coù chöùc naêng nhö caùc ngaét trong baûng

vector ngaét cuûa DOS, nhöng noù thaân thieän hôn ôû choã caùch goïi haøm API gioáng

heät caùch goïi haøm cuûa ngoân ngöõ caáp cao, moãi haøm coù moät teân goïi haún hoi, vaø teân

goïi thöôøng ñöôïc ñaët raát phuø hôïp vôùi coâng duïng cuûa haøm (maëc duø coù hôi daøi

doøng) töø ñoù taïo khaû naêng gôïi nhôù cao. Vôùi Windows, ngöôøi laäp trình khoâng coøn

phaûi laäp trình theo kieåu assembly nöõa maø laäp trình theo kieåu ngoân ngöõ caáp cao,

moïi hoaït ñoäng trong maùy ôû möùc thaáp töø haøm API trôû xuoáng thuoäc phaïm vi cuûa

Windows, vaø Windows khoâng khuyeán khích vieäc caùc öùng duïng can thieäp vaøo

lónh vöïc naøy. Buø laïi, baèng caùc haøm API, noù hoã trôï raát hieäu quaû cho ngöôøi laäp

trình, giuùp khai thaùc khaû naêng cuûa thieát bò trieät ñeå, deã daøng vaø tieän lôïi hôn bao

giôø heát. Coù theå noùi Windows ñaõ môû ra cho ngöôøi laäp trình khoâng gian roäng lôùn

ñeå phaùt trieån öùng duïng, vaø haïn cheá khoâng gian phaùt trieån heä thoáng. Ñieàu naøy

daãn ñeán heä quaû laø caùc öùng duïng ñöôïc taïo ra heát söùc deã daøng, vaø quan troïng laø heä

thoáng chaïy oån ñònh hôn, khoâng bò treo do loãi cuûa öùng duïng, khoâng theå xaâm

nhaäp, nhöng seõ raát khoù khaên neáu ngöôøi laäp trình muoán tröïc tieáp ñieàu khieån hoaït

ñoäng trong maùy vaø phaùt trieån veà laäp trình heä thoáng.

- Tìm hieåu haøm Windows API: Windows laø moät heä ñieàu haønh ña nhieäm

(multitasking) maø qua ñoù caùc öùng duïng ôû trong moâi tröôøng Windows seõ giao tieáp

vôùi user thoâng qua moät hay nhieàu giao dieän. Ñeå truy caäp caùc giao dieän naøy thì

caùc öùng duïng ñöôïc xaây döïng treân moâi tröôøng Windows seõ söû duïng taäp caùc haøm

ñöôïc goïi laø giao dieän chöông trình öùng duïng API (Application Program

Interface). Chöông trình cuûa ngöôøi söû duïng coù theå goïi tôùi caùc haøm API ñeå truy

caäp tôùi moïi taøi nguyeân cuûa Windows. GDI laø moät boä phaän cuûa API, giao dieän

thieát bò ñoà hoïa GDI (Graphic Device Interface) coù nhieäm vuï duy trì söï ñoäc laäp

cuûa Windows ñoái vôùi caùc thieát bò ñoà hoïa hay coøn goïi laø khaû naêng ñoäc laäp thieát bò

(device independent) töùc laø cho pheùp Windows laøm vieäc vôùi nhieàu kieåu thieát bò

ñoà hoïa khaùc nhau.

SVTH : Löông Cao Hoaøi Taâm Lôùp TH40

Baùo Caùo Luaän Vaên Toát Nghieäp Trang 7

2 - Thö vieän lieân keát ñoäng DLL (Dynamic Link Library):

Thö vieän lieân keát ñoäng laø caùc taäp tin ñöôïc Windows löu döôùi daïng nhò phaân

chöùa caùc haøm maø moïi öùng duïng treân Windows ñeàu coù theå söû duïng. Neùt ñaëc

tröng cuûa DLL laø noù coù theå ñöôïc söû duïng bôûi nhieàu öùng duïng taïi cuøng moät thôøi

ñieåm hay noùi caùch khaùc thö vieän lieân keát ñoäng coù theå cuøng moät luùc ñöôïc goïi bôûi

nhieàu chöông trình. DLL laø moät döõ lieäu chia seû ñöôïc (shared data).

Coù 3 loaïi DLL khaùc nhau:

- Thö vieän lieân keát ñoäng API: thuoäc heä thoáng Windows, khi caøi heä ñieàu

haønh thì noù ñaõ coù saün. Chuùng ñöôïc naïp khi Windows khôûi ñoäng.

- Thö vieän lieân keát ñoäng third party: do caùc coâng ty khaùc taïo ra treân moâi

tröôøng Windows, hoã trôï theâm coâng taùc laäp trình trong Windows.

- Thö vieän lieân keát ñoäng do chuùng ta taïo ra.

Windows söû duïng caáu truùc thö vieän lieân keát ñoäng DLL (Dynamic Link

Library) nhaèm muïc ñích khoâng sao cheùp moät khoái löôïng lôùn caùc maõ vaøo trong

chöông trình nhö ôû caùc thö vieän thoâng thöôøng. Nhôø caáu truùc ñoäng cuûa DLL neân

moïi chöông trình ñeàu coù theå truy caäp thö vieän trong thôøi gian thöïc thi. Caùc haøm

API ñöôïc Windows giöõ döôùi daïng hoãn hôïp trong moät soá DLL. Trong quaù trình

dòch khi gaëp leänh goïi haøm API töø chöông trình öùng duïng thì chöông trình dòch

khoâng theâm maõ naøy vaøo module thöïc hieän maø chæ theâm caùc leänh lieân keát (chöùa

teân cuûa DLL beân trong coù haøm caàn naïp) vaø teân haøm ñoù. Khi thöïc thi chöông

trình thì haøm API thöïc söï môùi ñöôïc naïp vaøo boä nhôù ñeå thöïc hieän.

Cuøng vôùi söï phaùt trieån cuûa Windows laø söï phaùt trieån cuûa laäp trình höôùng

ñoái töôïng, vaø ñeå hoã trôï cho vieäc laäp trình höôùng ñoái töôïng, Microsoft ñaõ cung

caáp cho ngöôøi laäp trình moät boä thö vieän caùc lôùp cô baûn ñeå phaùt trieån caùc öùng

duïng höôùng ñoái töôïng goïi laø MFC (Microsoft Foundation Classes), noäi dung cuûa

noù bao goàm thoâng tin veà caùc lôùp cô baûn ñöôïc chuaån hoùa nhö lôùp application;

document; view; OLE; cöûa soå; nuùt baám; text; v.v…, trong caùc lôùp naøy moïi thöù

lieân quan ñeán noù (bao goàm döõ lieäu vaø caùc chöông trình xöû lyù cuûa noù) ñeàu ñöôïc

laøm hoaøn chænh, ngöôøi laäp trình chæ vieäc laáy ra söû duïng, hoaëc coù theå theâm bôùt

moät ít tính naêng ñaëc tröng cho ñoái töôïng cuûa mình. Muïc tieâu chính cuûa MFC laø

heä thoáng hoùa caùc haøm API, cung caáp moät theå thöùc goïi goïn caùc haøm API, cung

caáp moät “khung laøm vieäc” (framework) cöïc maïnh ñeå ngöôøi laäp trình khoâng caàn

SVTH : Löông Cao Hoaøi Taâm Lôùp TH40

Baùo Caùo Luaän Vaên Toát Nghieäp Trang 8

phaûi quan taâm ñeán nhöõng ñoaïn chöông trình thuoäc veà “thuû tuïc” maø chæ caàn quan

taâm ñeán phaàn coát loõi ñeå ñaït ñöôïc muïc ñích.

II - THOÂNG ÑIEÄP VAØ XÖÛ LYÙ THOÂNG ÑIEÄP:

1 - Khaùi nieäm:

Laäp trình treân moâi tröôøng Windows khaùc vôùi laäp trình ôû caùc moâi tröôøng

khaùc ôû ñieåm laø laäp trình treân Windows luoân luoân gaén lieàn vôùi nhöõng thoâng ñieäp.

Moïi hoaït ñoäng xaûy ra treân moät chöông trình Windows ñeàu thoâng qua caùc thoâng

ñieäp. Thoâng ñieäp seõ ñöôïc heä thoáng baùo cho caùc öùng duïng bieát caùc taùc ñoäng töø

beân ngoaøi vaøo heä thoáng Windows. Moät cöûa soå coù theå gôûi ñi moät thoâng ñieäp cho

moät cöûa soå khaùc vaø caùc cöûa soå ñaùp öùng laïi thoâng ñieäp baèng caùch gôûi ñi moät

thoâng ñieäp khaùc cho moät cöûa soå khaùc.

Trong Windows coù 3 loaïi thoâng ñieäp cô baûn:

- Nhöõng thoâng ñieäp toång quaùt: coù maõ nhaän dieän mang tieàn toá WM_ ñöôïc

coi laø phaàn lôùn trong öùng duïng vaø Windows ñaõ cung caáp caùc haøm ñeå giaûi quyeát.

- Nhöõng control notification: ñaây laø nhöõng thoâng ñieäp WM_COMMAND

ñöôïc chuyeån töø cöûa soå con tôùi cöûa soå boá meï.

- Nhöõng nuùt leänh: laø thoâng ñieäp WM_COMMAND phaùt ñi töø trình ñôn, töø

caùc nuùt ñieàu khieån. Ñaây laø loaïi thoâng ñieäp yeâu caàu öùng duïng phaûi thöïc hieän moät

coâng vieäc gì ñoù.

2 - Gôûi ñi caùc thoâng ñieäp:

Windows cho pheùp öùng duïng gôûi ñi nhöõng thoâng ñieäp cho mình, cho caùc

öùng duïng khaùc hoaëc cho heä thoáng.

Coù 3 haøm Windows API ñeå gôûi thoâng ñieäp ñi:

a) Haøm SendMessage:

Cuù phaùp:

LRESULT SendMessage(hwnd, uMsg, wParam, lParam)

HWND hwnd; // handle cuûa cöûa soå nhaän (ñích)

UINT uMsg; // thoâng ñieäp ñeå gôûi

WPARAM wParam; // thoâng soá thoâng ñieäp ñaàu tieân

SVTH : Löông Cao Hoaøi Taâm Lôùp TH40

Baùo Caùo Luaän Vaên Toát Nghieäp Trang 9

LPARAM lParam; // thoâng soá thoâng ñieäp thöù hai

- Haøm SendMessage gôûi thoâng ñieäp tôùi moät hay nhieàu cöûa soå. Haøm goïi thuû

tuïc cöûa soå cho cöûa soå vaø khoâng trôû veà cho ñeán luùc thuû tuïc cöûa soå ñaõ xöû lyù thoâng

ñieäp.

- Giaù trò traû veà: cho bieát keát quaû xöû lyù thoâng ñieäp vaø phuï thuoäc vaøo thoâng

ñieäp ñöôïc gôûi.

b) Haøm PostMessage:

- Cuù phaùp:

BOOL PostMessage(hwnd, uMsg, wParam, lParam)

HWND hwnd; // handle cuûa cuûa soå ñích

UINT uMsg; // thoâng ñieäp gôûi

WPARAM wParam; // thoâng soá thoâng ñieäp ñaàu tieân

LPARAM lParam; // thoâng soá thoâng ñieäp thöù hai

- Haøm PostMessage gôûi (ñaët) moät thoâng ñieäp vaøo trong haøng thoâng ñieäp

cöûa soå vaø roài trôû veà maø khoâng ñôïi cöûa soå töông öùng xöû lyù thoâng ñieäp. Nhöõng

thoâng ñieäp trong moät haøng thoâng ñieäp ñöôïc laáy baèng caùch goïi haøm SetMessage

hay PeekMessage.

- Giaù trò traû veà: traû veà khaùc 0 neáu thaønh coâng, ngöôïc laïi 0.

c) Haøm SendDlgItemMessage:

- Cuù phaùp:

LRESULT

SendDlgItemMessage(hwndDlg,idDlgItem,uMsg,wParam,lParam)

HWND hwndDlg; // handle cuûa hoäp hoäi thoaïi

int idDlgItem; // maõ nhaän dieän oâ ñieàu khieån seõ nhaän thoâng ñieäp

UINT uMsg; // thoâng ñieäp gôûi ñi

WPARAM wParam; // thoâng soá thoâng ñieäp ñaàu tieân

LPARAM lParam; // thoâng soá thoâng ñieäp thöù hai

- Haøm SendDlgItemMessage gôûi moät thoâng ñieäp tôùi moät ñieàu khieån trong

hoäp hoäi thoaïi.

SVTH : Löông Cao Hoaøi Taâm Lôùp TH40

Tải ngay đi em, còn do dự, trời tối mất!