Cửa sổ ứng dụng Menu

Một phần của tài liệu Đồ án nghiên cứu các phương pháp nhận dạng từ dưới cursor mouse trên Desktop Windows (Trang 67)

thông điệp của chương trình: MenuWndProc

Cài đặt giao diện chương trình từ RESOURCE và đăng ký lớp cửa sổ ứng dụng mới cho chương trình (hàm MenuInit): lớp cửa sổ ứng dụng mới cho chương trình (hàm MenuInit):

- Cửa sổ ứng dụng - Menu - Menu

Thoát?(WM_QUIT) (WM_QUIT)

KẾT THÚC

LƯU ĐỒ CỦA CHƯƠNG TRÌNH CHÍNH

Tạo cửa sổ chương trình

Xử lý thông điệp(hàm MenuWndProc) (hàm MenuWndProc) Yes

No

Lưu handle cửa sổ chương trình vào DLL (hàm InitHookDll),để các hàm trong DLL có thể cập nhật cửa sổ chương trình để các hàm trong DLL có thể cập nhật cửa sổ chương trình

Bỏ đăng ký lớp cửa sổ ứng dụngBẮT ĐẦU BẮT ĐẦU

+ GTDLL.ExtTextOutEx : Hàm override c a ExtTextOutủ

+ GTDLL.GetWordUnderPoint : Hàm phân tích và trích t ra kh i dịngừ ỏ v n b nă ả

- Các bi n tồn c c ch y u bao g m:ế ụ ủ ế ồ

+ GTDLL.hwndMain : Handle c a s chính c a application, dùng đ inử ổ ủ ể k t qu vào c a s chính.ế ả ử ổ

+ GTDLL.hMod : Handle tồn c c c a instance DLLụ ủ + GTDLL.mousePos : V trí chu t c n l y text.ị ộ ầ ấ + GTDLL.searched : Chi u dài text tìm th yề ấ

+ GTDLL.mWordUnderPoint : K t qu -t l y đ cế ả ừ ấ ượ + GTDLL.MouseHookHandle : Hook handles

BẮT ĐẦU

Trích từ ra bằng các thông tin trong parameter của

TextOut(); ExtTextOut() (gọi hàm GetWordUnderPoint): - hDC

- Vị trí cursor

- Toạ độ chuỗi in ra - Chuỗi text được in

- Độ dài chuỗi text được in - TEXTMETRIC hiện hành

Đã lấy được từ nào chưa?(biến searched) (biến searched)

Gọi RemoveOverrideAPI()

KẾT THÚC

LƯU ĐỒ HAØM OVERRIDE TextOut & ExtTextOut(GTDLL.DLL : TextOutEx & ExtTextOutEx) (GTDLL.DLL : TextOutEx & ExtTextOutEx)

No

Yes

Gọïi hàm TextOut(); ExtTextOut() chuẩnđể in ra dòng text như bình thường để in ra dòng text như bình thường

Bắt đầu

Nạp module thư viện GDI.EXEHàm LoadLibrary() Hàm LoadLibrary()

handle<HINSTANCE_ERROR

-Lấy điểm nhập hàm API TextOut,ExtTextOutHàm GetProcAddress() Hàm GetProcAddress()

-Lấy segment selector và địa chỉ offset của hàmAPI. Macro SELECTOROF và OFFSETOF API. Macro SELECTOROF và OFFSETOF -Giải phóng thư viện GDI.EXE đã nạp

Tên hàm=("TextOut" | "ExtTextOut)

-Lấy địa chỉ logic của hàm override TextOutEx(),ExtTextOutEx. Hàm MakeProcInstance() ExtTextOutEx. Hàm MakeProcInstance()

-Giải phóng hàm override khỏi segment giới hạn nóHàm FreeProcInstance() Hàm FreeProcInstance()

-Lấy bộ chọn phân đọan và địa chỉ offset hàm override-Đổi từ code selector của hàm API sang data selector -Đổi từ code selector của hàm API sang data selector Hàm PrestoChangoSelector()

-Ghi lên 5 byte đầu của hàm API bằng đoạn code assembler-Đổi trở lại từ data selector sang code selector -Đổi trở lại từ data selector sang code selector

Kết thúc Báo lỗi Báo lỗi Báo lỗi No Yes No Yes

LƯU ĐỒ HAØM INSTALL OVERRIDE( GTDLL.DLL : InstallOverrideAPI ) ( GTDLL.DLL : InstallOverrideAPI )

LƯU ĐỒ HAØM GỠ BỎ OVERRIDE(GTDLL.DLL : RemoveOverrideAPI) (GTDLL.DLL : RemoveOverrideAPI)

Bắt đầu

Nạp module thư viện GDI.EXE(Hàm LoadLibrary) (Hàm LoadLibrary)

handle < HINSTANCE_ERROR

- Lấy điểm nhập hàm API TextOut(),ExtTextOut() (Hàm GetProcInstance() ) (Hàm GetProcInstance() )

Một phần của tài liệu Đồ án nghiên cứu các phương pháp nhận dạng từ dưới cursor mouse trên Desktop Windows (Trang 67)

Tải bản đầy đủ (DOC)

(93 trang)
w