Thư viện lớp, một thành phần chính khác của .NET Framework là một tập hợp hướng đối tượng của các kiểu dữ liệu được dùng lại, nó cho phép chúng ta có thể phát triển những ứng dụng từ nhữ
Trang 1Khoa : Công Nghệ Thông Tin
Khóa Luận Cử Nhân Tin Học
Đề Tài :
Tăng cường tính năng của Internet Explorer bằng kĩ thuật Plug-ins
¾ Tìm hiểu kĩ thuật Phug-ins của ứng dụng IE
¾ Tìm hiểu linh kiện phần mềm cung cấp dịch vụ duyệt file HTML
¾ Tìm hiểu thư viện chuyển mã và font tiếng việt
¾ Phận tích thiết kế và hiện thực module Plug-ins cho IE để việt hóa
giao diện IE và hiển thị đúng nội dung trang HTML tiếng việt dùng bất kì mã nào
Giáo viên hướng dẫn :
Sinh Viên Thực hiện :
Niên Khóa 2003-2007
Trang 2SVTH: Trần Thanh Tùng Trang 1/84 MSSV: 10366374
Lời cảm ơn:
Em xin được gửi lời cảm ơn đến các thầy cô giảng viên trường Đại học Mở TP.HCM cũng như các bạn đã giúp đỡ em trong quá trình thực hiện luận văn
Các thầy cô giảng viên trong khoa Công Nghệ Thông Tin đã tạo điều kiện cho em thực hiện tốt luận văn
Cảm ơn ban giám hiệu trường Đại Học Mở TP.HCM
Cảm ơn bạn Nguyễn Quang Hiển – sinh viên khoa CNTH khóa 2003
đã giúp em trong quá trình giải quyết khó khăn cùng những tài liệu của bạn
Đặc biệt, em xin gửi đến thầy Nguyễn Văn Hiệp lời cảm ơn sâu sắc vì
sự nhiệt tình và tận tâm mà thầy đã giành cho em Trong quá trình làm bài thầy đã chuyền đạt và chỉ dẩn cho em những điều mà em chưa từng gặp phải, một lần nữa em xin chân thành cảm ơn thầy
Trang 3SVTH: Trần Thanh Tùng Trang 2/84
MSSV: 10366374 Mục Lục : Chương 1 : Giới Thiệu Nội Dung Và Mục Tiêu Đề Tài 1.1Giới Thiệu Nội Dung 5
1.2 Mục Tiêu Đề Tài 6
Chương 2 : Kiến Thức Nền Cần Dùng Cho Đề Tài 7
2.1 Tìm Hiểu Về Ngôn Ngữ Lập Trình C# 7
2.1.1 Kiến trúc NET Framework 7
2.1.2COMmon Language Runtime (CLR) 8
2.1.3 Biên dịch và MSIL 9
2.1.4 gôn ngữ C# và những ưu điểm 10
2.2 Tìm Hiểu Về BHO 16
2.2.1 Browser Helper Object là gì 16
2.3 Tìm Hiểu Về Registry 18
2.3.1 Giới thiệu về Registry 18
2.3.2 Các Lớp NET Registry 20
2.4 Tìm Hiểu Về Font Chữ Việt Và Bản Mã Unicode 21
2.4.1 Tìm Hiểu Về Font Chữ Tiếng Việt 21
2.4.2 Bản Mã Unicode Và Bản Mã Chuẩn 34
2.5 Tìm Hiểu Về Internet Explorer 36
2.5.1 Khái niệm 36
2.5.2 Kiến trúc của Internet Explorer 36
2.6 Tìm Hiểu Về COM 38
2.6.1 Khái niệm COM 38
2.6.2 Các vấn đề khi dùng chung NET và COM với nhau 39
2.6.3 NET hỗ trợ COM 39
Trang 4SVTH: Trần Thanh Tùng Trang 3/84
MSSV: 10366374 Chương 3 : Phân Tích Đề Tài 41
3.1 Phân tích nội dung 41
3.1.1 Cách thức việt hóa giao diện 41
3.1.2 Viết Plugins đăng ký sự kiện với IE 42
3.1.3 Phân tích cách thức duyệt trang HTML 44
3.1.4 Chuyển nội dung trang HTML san mã Unicode 48
3.1.4.1 Chuyển nội dung trang 48
3.1.4.2 Chuyển Font trong thẻ tag của trang 49
3.1.4.3 Nguyên lý chuyển mã tư bản mã tiếng việt san mã Unicode
Chương 4 : Hiện Thực 55
4.1 Hiện Việt Hóa Giao Diện 55
4.2 Hiện Thực Cách Đăng Ký Sự Kiện Với IE 60
4.3 Hiện Thực Cơ Chế Duyệt Trang HTML 75
4.4 Hiện Thực Cơ Chết Chuyển Mã 81
4.5 Chương Trình Đề Mô 82
Chương 5 : Kết Quả Và Hướng Phát Triển 85
5.1 Tổng Kết 85
5.2 Kết Luận 85
5.3 Hướng Phát Triển 85
5.4 Tài Liệu Tham Khảo 85
Trang 5SVTH: Trần Thanh Tùng Trang 4/84 MSSV: 10366374
Chương 1: Giới Thiệu Nội Dung Và Mục Tiêu Đề Tài
1.1 Giới Thiệu Nội Dung :
Ngày nay, máy vi tính cá nhân đã trở nên phổ biến trong cuộc sống hiện đại: từ công sở đến gia đình, từ trường học đến viện nguyên cứu, từ phân xưởng đến bệnh viện… tất cả hoạt động đều cần đến máy vi tính
Máy tính, với khả năng của mình, giúp cho quá trình xử lý dữ liệu được nhanh chóng để cho ra kết quả tốt nhất trong thời gian sớm nhất
Và cùng với xu thế phổ biến của máy tính, internet đã ra đời để đáp ứng cho những nhu cầu khác nhau, một trong số đó là tìm kiếm thông tin, chia sẽ thông tin với mọi người ở mọi nơi trên thế giới trên tất cả các lĩnh vực Mặc dù internet cung cấp cho chúng ta nhiều giao thức khác nhau để truy cập, trao đổi dữ liệu Trong đó phổ biến nhất là giao thức HTTP(Hypertext Transfer Protocól) Nói cách khác chúng ta truy cập Internet phần lớn dựa vào trình duyệt web Vì vậy, các công ty lớn trên thế giới có liên quan đến công nghệ web như Microsoft, Nestcape, Mozilla… đua nhau đưa ra các trình duyệt web dựa trên giao thức HTTP nhầm tăng cường khả năng hổ trợ người dùng Nhờ vậy người dùng internet cũng được hưởng lợi từ sự cạnh tranh này: hầu hết các trình duyệt web hiện này như : Internet Explorer, Nestcape navigator, Mozilla Firefox…đều miễn phí và được cập nhật liên tục Trong đó người khổng lồ Microsoft với trình duyệt Internet Explorer được xem là phổ biến nhất hiện nay bởi những ưu điểm sau :
Internet Explorer được miễn phí kèm theo trên tất cả các phiên bản Hệ Điều Hành của Windows
Ít chiếm tài nguyên hệ thống , hoạt động ổn định
Nó cung cấp cơ sở hạ tầng để giao tiếp, nên có nhiều hãng thứ ba viết các plug-ins giao tiếp với Internet Explorer để phục vụ cho những nhu cầu khác nhau
Ra đời rất sớm, nên chiếm nhiều tình cảm của người dùng
Hiện nay hơn 90% người dùng Hệ Điều Hành Windows sử dụng trình duyệt Internet Explorer Điều này cho thấy, internet explorer có sức ảnh hưởng rất lớn đối với cộng đồng internet
Bên cạnh đó, những người dùng Việt gặp không ít khó khăn khi sử dụng trình duyệt web với hệ ngôn ngữ khác, cụ thể là tiếng anh Mặt dù chúng ta đã có bộ gõ, font tiếng việt nhưng vẫn có những trường hợp không
Trang 6SVTH: Trần Thanh Tùng Trang 5/84 MSSV: 10366374
hiển thị đúng tiếng việt, rồi máy không có font vẫn thường xuyên xảy ra, gây không ít khó khăn cho người dùng việt chúng ta
Với những nhu cầu thực tế đó, thầy Nguyễn Văn Hiệp đã cho ra đề tài :
Tăng cường tính năng của Internet Explorer bằng kĩ thuật Plug-ins
Tìm hiểu kĩ thuật Phug-ins của ứng dụng IE
Tìm hiểu linh kiện phần mềm cung cấp dịch vụ duyệt file HTML Tìm hiểu thư viện chuyển mã và font tiếng việt
Phận tích thiết kế và hiện thực module Plug-ins cho IE để việt hóa giao diện IE và hiển thị đúng nội dung trang HTML tiếng việt dùng bất kì
Một ví dụ cụ thể như : một người ở thành phố gửi thư cho một người việt ở hải ngoại, do dùng bản mã TCVN hay VNI Windows như VNI-Times hay VnArial thì khi người nhận ở hải ngoại thường không đọc được vì họ không cài Font VNI hay Font VnArial Khi đó chương trình của chúng ta sẽ giúp họ hiển thị đúng tiếng việt mà không cần cài font vào
Một ví dụ khác: khi thiết kế web site ngươi việt thường quen dùng font VNI-Times để thiết kế đến khi người dùng truy cập ở những máy không có font sẽ không hiển thị đúng Tất nhiên là chỉ đối với những người không chuyên nghiệp và những trang web được thiết kế vào những năm trước vì khi đó bản mã Unicode chưa phổ biến và người dùng chưa biết nhiều về font chữ cũng như các bản mã tiếng việt mình
Tóm lại đề tài chỉ mong hổ trợ một phần vào việc giải quyết rất rối của người dùng Internet bằng trình duyệt Internet Explorer cũng như giúp cho người việt cảm thấy thân thiện hơn với giao diện IE bằng ngôn ngữ tiếng Việt
Từ giao diện tiếng việt người dùng phần nào hiểu được các tùy chọn, hay các tùy chỉnh mà mình thực hiện trên IE
Trang 7SVTH: Trần Thanh Tùng Trang 6/84 MSSV: 10366374
Chương 2 : Kiến Thức Nền Cần Dùng Cho Đề Tài
2.1 Tìm Hiểu Về Ngôn Ngữ Lập Trình C#
2.1.1 Kiến trúc NET Framework
.NET Framework là một platform mới làm đơn giản việc phát triển ứng dụng trong môi trường phân tán của Internet .NET Framework được thiết kế đầy
đủ để đáp ứng theo quan điểm sau:
¾ Để cung cấp một môi trường lập trình hướng đối tượng vững chắc, trong đó mã nguồn đối tượng được lưu trữ và thực thi một cách cục
bộ Thực thi cục bộ nhưng được phân tán trên Internet, hoặc thực thi
¾ Để cung cấp một môi trường thực thi mã nguồn mà loại bỏ được những lỗi thực hiện các script hay môi trường thông dịch
¾ Để làm cho những người phát triển có kinh nghiệm vững chắc có thể nắm vững nhiều kiểu ứng dụng khác nhau Như là từ những ứng dụng trên nền Windows đến những ứng dụng dựa trên web
¾ Để xây dựng tất cả các thông tin dựa triên tiêu chuẩn công nghiệp để đảm bảo rằng mã nguồn trên NET có thể tích hợp với bất cứ mã nguồn khác
.NET Framework có hai thành phần chính: COMmon Language Runtime (CLR) và thư viện lớp NET Framework CLR là nền tảng của NET Framework Chúng ta có thể hiểu runtime như là một agent quản lý mã nguồn khi nó được thực thi, cung cấp các dịch vụ cốt lõi như: quản lý bộ nhớ, quản lý tiểu trình, và quản lý từ xa Ngoài ra nó còn thúc đẩy việc sử
dụng kiểu an toàn và các hình thức khác của việc chính xác mã nguồn, đảm bảo cho việc thực hiện được bảo mật và mạnh mẽ Thật vậy, khái niệm quản lý mã nguồn là nguyên lý nền tảng của runtime Mã nguồn mà đích tới runtime thì được biết như là mã nguồn được quản lý (managed code) Trong khi đó mã nguồn mà
Trang 8SVTH: Trần Thanh Tùng Trang 7/84 MSSV: 10366374
không có đích tới runtime thì được biết như mã nguồn không được quản lý (unmanaged code)
Thư viện lớp, một thành phần chính khác của NET Framework là một tập hợp hướng đối tượng của các kiểu dữ liệu được dùng lại, nó cho phép chúng ta có thể phát triển những ứng dụng từ những ứng dụng truyền thống COMmand-line hay những ứng dụng có giao diện đồ họa (GUI) đến những ứng dụng mới nhất được cung cấp bởi ASP.NET, như là Web Form và dịch vụ XML Web
2.1.2 COMmon Language Runtime (CLR)
Như đã đề cập thì CLR thực hiện quản lý bộ nhớ, quản lý thực thi tiểu trình, thực thi mã nguồn, xác nhận mã nguồn an toàn, biên bịch và các dịch vụ hệ thống khác Những đặc tính trên là nền tảng cơ bản cho những mã nguồn được quản lý chạy trên CLR
Do chú trọng đến bảo mật, những thành phần được quản lý được cấp những mức độ quyền hạn khác nhau, phụ thuộc vào nhiều yếu tố nguyên thủy của chúng như: liên quan đến Internet, hệ thống mạng trong nhà máy, hay một máy tính cục bộ Điều này có nghĩa rằng, một thành phần được quản lý có thể có hay
Trang 9SVTH: Trần Thanh Tùng Trang 8/84 MSSV: 10366374
không có quyền thực hiện một thao tác truy cập tập tin, thao tác truy cập registry, hay các chức năng nhạy cảm khác
CLR thúc đẩy việc mã nguồn thực hiện việc truy cập được bảo mật Ví dụ, người sử dụng giới hạn rằng việc thực thi nhúng vào trong một trang web có thể chạy được hoạt hình trên màn hình hay hát một bản nhạc, nhưng không thể truy cập được dữ liệu riêng tư, tập tin hệ thống, hay truy cập mạng Do đó, đặc tính bảo mật của CLR cho phép những phần mềm đóng gói trên Inernet có nhiều đặc tính mà không ảnh hưởng đến việc bảo mật hệ thống
CLR còn thúc đẩy cho mã nguồn được thực thi mạnh mẽ hơn bằng việc thực thi mã nguồn chính xác và sự xác nhận mã nguồn Nền tảng của việc thực hiện này là COMmon Type System (CTS) CTS đảm bảo rằng những mã nguồn được quản lý thì được tự mô tả (selfdescribing) Sự khác nhau giữa Microsoft và các trình biên dịch ngôn ngữ của hãng thứ ba là việc tạo ra các mã nguồn được quản lý có thể thích hợp với CTS Điều này thì mã nguồn được quản lý có thể sử dụng những kiểu được quản lý khác và những thể hiện, trong khi thúc đẩy nghiêm ngặt việc sử dụng kiểu dữ liệu chính xác và an toàn
Thêm vào đó, môi trường được quản lý của runtime sẽ thực hiện việc tự động xử lý layout của đối tượng và quản lý những tham chiếu đến đối tượng, giải phóng chúng khi chúng không còn được sử dụng nữa Việc quản lý bộ nhớ tự động này còn giải quyết hai lỗi chung của ứng dụng: thiếu bộ nhớ và tham chiếu
bộ nhớ không hợp lệ
Trong khi runtime được thiết kế cho những phần mềm của tương lai, nó cũng hỗ trợ cho phân mềm ngày nay và trước đây Khả năng hoạt động qua lại giữa mã nguồn được quản lý và mã nguồn không được quản lý cho phép người phát triển tiếp tục sử dụng những thành phần cần thiết của COM và DLL
Rutime được thiết kế để cải tiến hiệu suất thực hiện Mặc dù CLR cung cấp nhiều các tiêu chuẩn dịch vụ runtime, nhưng mã nguồn được quản lý không bao giờ được dịch Có một đặc tính gọi là Just-in-Time (JIT) biên dịch tất cả những
mã nguồn được quản lý vào trong ngôn ngữ máy của hệ thống vào lúc mà nó được thực thi Khi đó, trình quản lý bộ nhớ xóa bỏ những phân mảnh bộ nhớ nếu
có thể được và gia tăng tham chiếu bộ nhớ cục bộ, và kết quả gia tăng hiệu quả thực thi
2.1.3 Biên dịch và MSIL
Trong NET Framework, chương trình không được biên dịch vào các tập tin thực thi mà thay vào đó chúng được biên dịch vào những tập tin trung gian gọi là Microsoft Intermediate Language (MSIL) Những tập tin MSIL được tạo ra
từ C# cũng tương tự như các tập tin MSILđược tạo ra từ những ngôn ngữ khác
Trang 10SVTH: Trần Thanh Tùng Trang 9/84 MSSV: 10366374
của NET, platform ở đây không cần biết ngôn ngữ của mã nguồn Điều quan trọng chính yếu của CLR là chung (COMmon), cùng một runtime hỗ trợ phát triển trong C# cũng như trong VB.NET
Mã nguồn C# được biên dịch vào MSIL khi chúng ta build project Mã MSIL này được lưu vào trong một tập tin trên đĩa Khi chúng ta chạy chương trình, thì MSIL được biên dịch một lần nữa, sử dụng trình biên dịch Just-In-Time (JIT) Kết quả là mã máy được thực thi bởi bộ xử lý của máy
Trình biên dịch JIT tiêu chuẩn thì thực hiện theo yêu cầu Khi một phương thức được gọi, trình biên dịch JIT phân tích MSIL và tạo ra sản phẩm mã máy có hiệu quả cao, mã này có thể chạy rất nhanh Trình biên dịch JIT đủ thông minh
để nhận ra khi một mã đã được biên dịch, do vậy khi ứng dụng chạy thì việc biên dịch chỉ xảy ra khi cần thiết, tức là chỉ biên dịch mã MSIL chưa biên dịch ra mã máy Khi đó một ứng dụng NET thực hiện, chúng có xu hướng là chạy nhanh và nhanh hơn nữa, cũng như là những mã nguồn được biên dịch rồi thì được dùng lại
Do tất cả các ngôn ngữ NET Framework cùng tạo ra sản phẩm MSIL giống nhau, nên kết quả là một đối tượng được tạo ra từ ngôn ngữ này có thể được truy cập hay được dẫn xuất từ một đối tượng của ngôn ngữ khác trong NET Ví dụ, người phát triển có thể tạo một lớp cơ sở trong VB.NET và sau đó dẫn xuất nó trong C# một cách dễ dàng
2.1.4 Ngôn ngữ C# và những ưu điểm
Ngôn ngữ C# khá đơn giản, chỉ khoảng 80 từ khóa và hơn mười mấy kiểu
dữ liệu được xây dựng sẵn Tuy nhiên, ngôn ngữ C# có ý nghĩa cao khi nó thực thi những khái niệm lập trình hiện đại C# bao gồm tất cả những hỗ trợ cho cấu trúc, thành phần COMponent, lập trình hướng đối tượng Những tính chất đó hiện diện trong một ngôn ngữ lập trình hiện đại Và ngôn ngữ C# hội đủ những điều kiện như vậy, hơn nữa nó được xây dựng trên nền tảng của hai ngôn ngữ mạnh nhất là C++ và Java
Ngôn ngữ C# được phát triển bởi đội ngũ kỹ sư của Microsoft, trong đó người dẫn đầu là Anders Hejlsberg và Scótt Wiltamuth Cả hai người này điều là những người nổi tiếng, trong đó Anders Hejlsberg được biết đến là tác giả của Turbo Pascal, một ngôn ngữ lập trình PC phổ biến Và ông đứng đầu nhóm thiết
kế Borland Delphi, một trong những thành công đầu tiên của việc xây dựng môi trường phát triển tích hợp (IDE) cho lập trình client/server
Phần cốt lõi hay còn gọi là trái tim của bất cứ ngôn ngữ lập trình hướng đối tượng là sự hỗ trợ của nó cho việc định nghĩa và làm việc với những lớp Những lớp thì định nghĩa những kiểu dữ liệu mới, cho phép người phát triển mở rộng
Trang 11SVTH: Trần Thanh Tùng Trang 10/84 MSSV: 10366374
ngôn ngữ để tạo mô hình tốt hơn để giải quyết vấn đề Ngôn ngữ C# chứa những
từ khóa cho việc khai báo những kiểu lớp đối tượng mới và những phương thức hay thuộc tính của lớp, và cho việc thực thi đóng gói, kế thừa, và đa hình, ba thuộc tính cơ bản của bất cứ ngôn ngữ lập trình hướng đối tượng
Trong ngôn ngữ C# mọi thứ liên quan đến khai báo lớp điều được tìm thấy trong phần khai báo của nó Định nghĩa một lớp trong ngôn ngữ C# không đòi hỏi phải chia ra tập tin header và tập tin nguồn giống như trong ngôn ngữ C++ Hơn thế nữa, ngôn ngữ C# hỗ trợ kiểu XML, cho phép chèn các tag XML để phát sinh tự động các document cho lớp
C# cũng hỗ trợ giao diện interface, nó được xem như một cam kết với một lớp cho những dịch vụ mà giao diện quy định Trong ngôn ngữ C#, một lớp chỉ
có thể kế thừa từ duy nhất một lớp cha, tức là không cho đa kế thừa như trong ngôn ngữ C++, tuy nhiên một lớp có thể thực thi nhiều giao diện Khi một lớp thực thi một giao diện thì nó sẽ hứa là nó sẽ cung cấp chức năng thực thi giao diện
Trong ngôn ngữ C#, những cấu trúc cũng được hỗ trợ, nhưng khái niệm về ngữ nghĩa của nó thay đổi khác với C++ Trong C#, một cấu trúc được giới hạn,
là kiểu dữ liệu nhỏ gọn, và khi tạo thể hiện thì nó yêu cầu ít hơn về hệ điều hành
và bộ nhớ so với một lớp Một cấu trúc thì không thể kế thừa từ một lớp hay được
kế thừa nhưng một cấu trúc có thể thực thi một giao diện
Ngôn ngữ C# cung cấp những đặc tính hướng thành phần oriented), như là những thuộc tính, những sự kiện Lập trình hướng thành phần được hỗ trợ bởi CLR cho phép lưu trữ metadata với mã nguồn cho một lớp Metadata mô tả cho một lớp, bao gồm những phương thức và những thuộc tính của nó, cũng như những sự bảo mật cần thiết và những thuộc tính khác Mã nguồn chứa đựng những logic cần thiết để thực hiện những chức năng của nó
(COMponent-Do vậy, một lớp được biên dịch như là một khối self-cóntained, nên môi trường hosting biết được cách đọc metadata của một lớp và mã nguồn cần thiết mà không cần những thông tin khác để sử dụng nó
Một lưu ý cuối cùng về ngôn ngữ C# là ngôn ngữ này cũng hỗ trợ việc truy cập bộ nhớ trực tiếp sử dụng kiểu cón trỏ của C++ và từ khóa cho dấu ngoặc [] trong toán tử Các mã nguồn này là không an toàn (unsafe) Và bộ giải phóng bộ nhớ tự động của CLR sẽ không thực hiện việc giải phóng những đối tượng được tham chiếu bằng sử dụng cón trỏ cho đến khi chúng được giải phóng
Sau đây là những ưu điểm của ngôn ngữ C# :
Trang 12SVTH: Trần Thanh Tùng Trang 11/84 MSSV: 10366374
C# là ngôn ngữ hiện đại
Điều gì làm cho một ngôn ngữ hiện đại? Những đặc tính như là xử
lý ngoại lệ, thu gom bộ nhớ tự động, những kiểu dữ liệu mở rộng, và bảo mật mã nguồn là những đặc tính được mong đợi trong một ngôn ngữ hiện đại C# chứa tất cả những đặc tính trên Nếu là người mới học lập trình có thể chúng ta sẽ cảm thấy những đặc tính trên phức tạp và khó hiểu Tuy nhiên, cũng đừng lo lắng chúng ta sẽ dần dần được tìm hiểu những đặc tính qua các chương trong cuốn sách này
Ghi chú: Cón trỏ được tích hợp vào ngôn ngữ C++ Chúng cũng là nguyên nhân gây ra những rắc rối của ngôn ngữ này C# loại bỏ những phức tạp và rắc rối phát sinh bởi cón trỏ
Trong C#, bộ thu gom bộ nhớ tự động và kiểu dữ liệu an toàn được tích hợp vào ngôn ngữ, sẽ loại bỏ những vấn đề rắc rối của C++
C# là ngôn ngữ hướng đối tượng:
Những đặc điểm chính của ngôn ngữ hướng đối tượng oriented language) là sự đóng gói (encapsulation), sự kế thừa (inheritance),
(Object-và đa hình (polymorphism) C# hỗ trợ tất cả những đặc tính đó
C# là ngôn ngữ mạnh mẽ và cũng mềm dẻo
Như đã đề cập trước, với ngôn ngữ C# chúng ta chỉ bị giới hạn ở chính bởi bản thân hay là trí tưởng tượng của chúng ta Ngôn ngữ này không đặt những ràng buộc lên những việc có thể làm C# được sử dụng cho nhiều các dự án khác nhau như là tạo ra ứng dụng xử lý văn bản, ứng dụng đồ họa, bản tính, hay thậm chí những trình biên dịch cho các ngôn ngữ khác
C# là ngôn ngữ ít từ khóa
C# là ngôn ngữ sử dụng giới hạn những từ khóa Phần lớn các từ khóa được sử dụng để mô tả thông tin Chúng ta có thể nghĩ rằng một ngôn ngữ có nhiều từ khóa thì sẽ mạnh hơn
Điều này không phải sự thật, ít nhất là trong trường hợp ngôn ngữ C#, chúng ta có thể tìm thấy rằng ngôn ngữ này có thể được sử dụng để làm bất
cứ nhiệm vụ nào Bảng sau liệt kê các từ khóa của ngôn ngữ C#
C# là ngôn ngữ hướng module
Mã nguồn C# có thể được viết trong những phần được gọi là những lớp, những lớp này chứa các phương thức thành viên của nó Những lớp và những phương thức có thể được sử dụng lại trong ứng dụng hay các
Trang 13SVTH: Trần Thanh Tùng Trang 12/84 MSSV: 10366374
chương trình khác Bằng cách truyền các mẫu thông tin đến những lớp hay phương thức chúng ta có thể tạo ra những mã nguồn dùng lại có hiệu quả
2.1.5 Những đặc điểm chung và riêng :
¾ Kiểu dữ liệu xây dựng sẵn
Ngôn ngữ C# đưa ra các kiểu dữ liệu xây dựng sẵn rất hữu dụng, phù hợp với một ngôn ngữ lập trình hiện đại, mỗi kiểu dữ liệu được ánh xạ đến một kiểu dữ liệu được hỗ trợ bởi hệ thống xác nhận ngôn ngữ chung (COMmon Language Specification: CLS) trong MS.NET Việc ánh xạ các kiểu dữ liệu nguyên thuỷ của C# đến các kiểu dữ liệu của NET sẽ đảm bảo các đối tượng được tạo ra trong C# có thể được sử dụng đồng thời với các đối tượng được tạo bởi bất cứ ngôn ngữ khác được biên dịch bởi NET, như VB.NET
Mỗi kiểu dữ liệu có một sự xác nhận và kích thước không thay đổi, không giống như C++, int trong C# luôn có kích thước là 4 byte bởi vì nó được ánh xạ từ kiểu Int32 trong NET
Trang 14SVTH: Trần Thanh Tùng Trang 13/84 MSSV: 10366374
Nhìn chung các kiểu dữ liệu, biến, hằng, biểu thức và câu lệnh đa số giống với ngôn ngữ C++
¾ Những điểm mới trong ngôn ngữ C#
Câu lệnh lặp foreach
Câu lệnh foreach cho phép chúng ta lặp qua tất cả các
mục trong một mảng hay trong một tập hợp
Cú pháp sử dụng lệnh lặp foreach như sau:
foreach (<kiểu dữ liệu thành phần><tên truy cập> in <mảng/tập hợp>) {
// thực hiện thông qua <tên truy cập> tương ứng với
Trang 15SVTH: Trần Thanh Tùng Trang 14/84 MSSV: 10366374
là lớp Object, lớp này nằm trên cùng trong cây phân cấp các lớp
Lớp Object cung cấp một số các phương thức dùng cho các lớp dẫn xuất có thể thực hiện việc phủ quyết Những phương thức này bao gồm Equals() kiểm tra xem hai đối tượng có giống nhau hay không Phương thức GetType() trả về kiểu của đối tượng Và phương thức ToString() trả về một chuỗi thể hiện lớp hiện hành Sau đây là bảng tóm tắt các phương thức của lớp Object
Giao diện tập hợp
Môi trường NET cung cấp những giao diện chuẩn cho việc liệt kê, so sánh, và tạo các tập hợp Một số các giao diện trong số đó được liệt kê trong bảng 9.2 sau:
Trang 16SVTH: Trần Thanh Tùng Trang 15/84 MSSV: 10366374
2.2 Tìm Hiểu Về BHO
2.2.1 Browser Helper Object là gì ?
Browser Helper Object, thường được viết tắt là BHO, được giới thiệu vào tháng 10 năm 1997 với phiên bản IE4
Một BHO là một DLL module được thiết kế giống như một plug-in cho IE của Microsoft để cung cấp thêm các tính năng cho browser
Một BHO là một COM in-process server được lưu dưới dạng một DLL, nó cho phép người phát triển tùy chỉnh và điều khiển Internet Explorer
BHOs là ActiveX DLLs, nó có khả năng plug-in, run, và tương tác với mỗi thực thể của Explorer
Chức năng của BHOs :
BHOs cho phép người phát triển tùy chỉnh và điều khiển browser một cách
dễ dàng Thay vì viết một chương trình đọc lập, người phát triển viết một DLL nhỏ, DLL này được load bởi IE và trở thành một phần của browser process
BHOs cho phép chúng ta xử lý thông tin từ internet hoặc trên hệ thống cục
bộ của chúng ta Cho ví dụ, chúng ta có thể sử dụng chúng để sử lý thông tin tự động mỗi lần chúng ta visit trực tiếp một webpage ưa thích và sử dụng chúng để
tự động lập lại những nhiệm vụ mà chúng ta thực hiện trên web Hình sau mô tả
Trang 17SVTH: Trần Thanh Tùng Trang 16/84
MSSV: 10366374
một BHO hoặc động giống như một người trung gian giữa Exlorer và web, cho phép chúng ta xử lý thông tin đến từ internet và xử lý thông tin xuất phát từ trình duyệt của chúng ta Chúng ta có thể sử dụng chúng để thực hiện hoặc tác động các nhiệm vụ xảy ra trong Explorer, như truy lục thông tin tài chính trên web
BHO có thể thay đổi việc làm của IE ( ví dụ: nó có thể block không cho tải webpage nào đó, hoặc tiếp quản công việc download một file) hoặc làm một công việc gì đó không liên quan đến IE ( gửi tên của trang mà bạn visit đến một site khác)
Khi được plug vào IE các BHOs có thể làm bất cứ điều gì mà nó muốn Bởi vì IE sẽ truyền thông về tất cả các hoat động của nó tới mỗi BHO được install, nên các BHOs có thể chỉnh sửa, thêm, hoặc hủy bất cứ khi nào nó muốn một cách dễ dàng
Ví dụ : IE sẽ gửi thông điệp đến BHO khi người sử dụng click trên một liên kết hoặc khi IE đã load trang web hoặc khi IE rời khỏi webpage…
Chính vì BHO có thể làm bất cứ điều gì mà nó dẩn đến, làm xuất hiện lỗi trong IE đó là không tin cậy và hiệu xuất của trình duyệt cũng bị giảm xuống vì
IE khởi động mỗi BHO bất cứ khi nào chúng ta mở browser hoặc thậm chí khi chúng ta mở một file folder trên máy của chúng ta
Một vấn đề khác có liên quan đến BHO là khi nó truy xuất internet nó xuất hiện giống như là truy cập bởi internet explorer Vì vậy nếu chúng ta sử dụng các tiện ích thông thường để phát hiện spyware hoặc để ngăn cản các phần mềm có hại, nó sẽ cho phép bất kì BHO nào truy cập vào bởi vì BHO được xem như là IE không phải là một ứng dụng tách rời Điều này có tạo sự lầm tưởng là website mà chúng ta đang visit đang cố gắng lấy trộm thứ gì đó như kết nối tới một website khác, mà thật ra chỉ là do BHO ở trong browser của chúng ta đã làm chuyện đó Cách Internet Explorer tải và khởi tạo BHOs
Cách thức load và tạo một instance của COM server ( ở đây client là IExplorer.exe và server là BHOs DLL)
Vì BHOs là COM inprocess server nên mỗi BHOs sẽ có một CLSID riêng dùng
để định danh duy nhất các BHOs Chúng sẽ dùng CLSID này để đăng ký với hệ thống và IE ở vị trí đặc biệt trong Registry ( HKEY_LOCAL_MACHINE\SOFTWARE\
Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects) Khi chúng ta khởi động IE, nó sẽ tìm các CLSIDs ở vị trí này trong Registry để định vị các BHOs được cài đặt và sau đó khởi tạo chúng Các đối tượng này chạy trong cùng memory context với browser
Trang 18SVTH: Trần Thanh Tùng Trang 17/84 MSSV: 10366374
Chú ý : Bởi vì các BHOs có cùng kiểu Shell Extension chỉ khác nhau ở các interface hiện thực nó, nên windows Explorer cũng có thể load và khởi tạo các BHOs
Chính vì vậy chúng ta có thể khẳng định rằng các BHOs sẽ được trigger cho mỗi quá trình IE và Explorer Điều này có nghĩa là BHOs được load mỗi khi chúng ta mở một folder window hoặc Control Panel hoặc khoăc khởi động IE
Hình bên mô tả một cái nhìn tổng quan về cách Internet Explorer load và khởi tạo BHOs Ở đây BHO site là COM interface được sử dụng để thiết lập quá trình liên lạc giữa IE và BHOs
Vì BHO là COM inprocess server nên khi được khởi tạo các instance của BHO sẽ ở trong cùng phân vùng với tiến trình Iexplorer.exe, vì vậy IE có thể truy cập tới các dịch vụ của BHO một cách nhanh chóng giống như nó đang gọi các phương thức của chính nó
Thời gian sống của Browser Helper Objects
- Thời gian sống của các BHOs bắt đầu từ khi IE khởi động ( thông qua việc chạy chương trình iexplorer.exe) cho tới khi IE được đóng hay window bị hủy
Tức là, mỗi lần một của sổ mới được mở, nó tạo một bản sao của BHO và khi của
sổ này bị đóng, nó phá hủy các bản sao BHO của nó
Đối với Internet Explorer 7, nó sẽ tạo và phá hủy một BHO mới cho mỗi tab Tức là BHO sẽ được tạo ra khi một tab mới được tạo và hủy đi khi tab này đóng lại
2.3 Tìm Hiểu Về Registry
2.3.1 Giới thiệu về Registry :
Những ai là dân lập trình COM, thì không thể tránh được sự khốn khổ với Registry của windows Còn đối với dân lập trình trên nền NET thì việc tiếp súc với Registry rất hạn chế .NET Framework đã giảm sự quan trọng của Registry đối với ứng dụng Vì Assemply đã trở thành “tự cung, tự cấp” do đó Assemply không cần thông tin đặt biệt được trữ trên Registry Registry giờ đây chỉ là nơi để bạn trữ thông tin về sở thích của người sử dụng
Namespace Microsoft.Win32 định nghĩa một vài lớp cho phép đọc hoặc viết system registry một cách dễ dàng
Các lớp thao tác với system registry :
- Registry : là một lớp trừu tượng hóa về bản thân registry với tất cả các lớp gắn liền
Trang 19SVTH: Trần Thanh Tùng Trang 18/84 MSSV: 10366374
- RegistryKey : Đây là lớp cốt lõi, nó cho phép ta thêm, gở bỏ và nhật tu thông tin được lưu trữ trong registry
- RegistryHive : Đây chỉ là lớp liệt kê các khuôn tổ ông trên registry Chúng ta hãy xem qua cấu trúc của Registry nha :
Thông thương để xem thông tin của registry ta hay dùng một trong hai tiện ích regedit.exe hoặc regedt32.exe Rất đơn giản chỉ cần gọi khung thoại Run lên rồi
gõ regedit là OK Hình sau sẽ xuất hiện :
Registry được xây dựng dưới dạng các block mỗi block chứa các keys, values và data Registry lưu trữ dữ liệu ở dạng cây phân cấp Tức là đầu tiên nó được lưu trữ dưới dạng các keys và mỗi key của chứa một hoặc nhiều keys hoặc một hoặc nhiều giá trị (value)
Registry lưu trữ các keys theo thứ tự giảm dần
Registry Editor hiển thị nội dung của registry ở trong 5 root keys ( đối với windows XP) Mỗi root keys có tên bắt đầu là HKEY_ để chỉ định rằng key là một định danh duy nhất
HKEY_USERS (HKU) chứa các thông tin về tất cả người sử dụng, những người người đăng ký với hệ thống
HKEY_CURRENT_USER (HKCU) key này trỏ tới một nhánh của HKEY_USERS cho người hiện tại đang đăng nhập vào trong hệ thống
Trang 20SVTH: Trần Thanh Tùng Trang 19/84 MSSV: 10366374
HKEY_LOCAL_MACHINE (HKLM) chứa thông tin đặc biệt của máy tính về kiểu của phần cứng được install và các thiết lập (setting) phần mềm
Thông tin này được sử dụng cho tất cả người sử dụng, những người đăng
ký với hệ thống này
HKEY_LOCAL_MACHINE\ Software\Classes mô tả việc thiết lập của phần mềm
HKEY_CURENT_CONFIG (HKCC) Key này là một con trỏ, trỏ tới HKEY_LOCAL_MACHINE\Config chứa thông tin về cấu hình hiện tại của phần cứng được gắn tới máy tính
Còn lại là hai key chứa thông tin mang tính tạm thời và thay đổi thường xuyên :
- HKEY_DYN_DATA : là một container tổng quát đối với bất cứ dữ liệu volatile nào cần trữ đâu đó trên Registry
- HKEY_PERFORMANCE_DATA : chứa thông tin liên quan đến thành tích của ứng dụng đang chạy
2.3.2 Các Lớp NET Registry :
Việc truy cập vào registry trên NET thông qua hai lớp Registry và RegistryKey thuật Namspace Microsoft.Win32, một thể hiện của lớp RegistryKey tượng trưng cho một registry key Lớp RegistryKey cung cấp những thành viên cốt lõi cho phép bạn làm việc với registry key
Các thành viên cốt lõi của lớp RegistryKey
Các thành viên Ý Nghĩa
Name Thuộc tính này tìm lại tên Key (read-only)
SubKeyCount Thuộc tính này tìm lại cái đếm số lượng subkey ValueCount Thuộc tính này tìm lại cái đếm các trị trên một
key Close() Hàm này cho phép đóng lại key này và ghi lại lên
đĩa nếu nội dung bị thay đổi
CreateSubKey() Hàm này tạo một subkey mới hoặc mở một
subkey hiện hữu Chuỗi subkey không phân biệt chữ hoa chữ thường
DeleteSubKey() Hàm này cho gỡ bỏ một subkey chỉ định nếu
Trang 21SVTH: Trần Thanh Tùng Trang 20/84 MSSV: 10366374
không gỡ bỏ subkey con cái , thi sử dụng đến hàm DeleteSubKeyTree() Chuổi subkey không nhận biết chữ hoa chữ thường
DeleteSubKeyTree() Hàm này gỡ bỏ một cách đệ quy một subkey và
bất cứ subkey cón cái nào Chuỗi subkey không phân biệt chữ hoa chữ thường
GetSubKeyNames() Hàm này cho tìm lại một bản dãy chuổi chứa tất
cả các tên của subkey
GetValue() Overloaded Hàm này tìm lại trị đươc khai báo
GetValueNames() Hàm này cho tìm lại một bản dãy chuỗi chứa tất
cả các tên trị
OpenRemoteBaseKey() Hàm này cho mở một RegistryKey mới tượng
chưng cho key được yêu cầu
OpenSubKey() Overloaded Hàm này cho tìm lại Subkey
SetValue() Hàm này cho đặt để một trị chỉ định Chuỗi
subkey không phân biệt chữ hoa thường
2.4 Tìm Hiểu Về Font Chữ Việt Và Bản Mã Unicode
2.4.1 Tìm Hiểu Về Font Chữ Tiếng Việt :
VISCII là một chuẩn bị của nhóm khoa học gia Tricholor Trong chuẩn này mỗi mẫu tự được biểu diễn bằng một byte (8 bít) Nhóm Tricholor dùng các con
số trống của bộ chữ ASCII ( của Mỹ- A là viết tác của American, trong khi VI cho Vietnamese) để biểu diễn các chữ Việt Nam có dấu Vì con số lớn nhất có thể biểu diễn bằng 1 byte là 255, đó là tổng số mẫu tự Việt Nam tối đa ta có thể dùng được bất cứ lúc nào Rất tiếc chữ Việt Nam cần hơn 255 mẫu tự nên người ta phải đặt thêm bộ chữ Hoa ( thí dụ như Uhoài 1.1) hay thay thế các dấu hiệu ít dùng, như dấu ngoặc kép, bằng những mẫu tự Việt Nam cần phải có Tức là hễ muốn có đầy đủ bộ chữ Việt ta phải hy sinh vài dấu hiệu ít dùng của bộ chữ ASCII
Bộ chữ VPS của Hội Vietnamese Professional Society cũng dùng cùng một nguyên tắt như VISCII Có điều khác là VPS được triển khai ở Pháp, nên các khoa học gia muốn bắt đầu bằng một bộ chữ dùng cho tiếng Pháp rồi mở mang thêm để dùng cho chữ Việt Nói tóm lại, hai bộ chữ VISCII và VPS khác nhau chỉ ở chỗ quy ước dùng con số nào để biểu diễn một mẫu tự Viêt Nam
Trang 22SVTH: Trần Thanh Tùng Trang 21/84 MSSV: 10366374
Ở Việt Nam có kiểu chữ vnTimes rất thịnh hành trên các trang web Các khoa học gia thiết kế kiểu chữ này cũng dùng một nguyên tắc giống như trong VISCII và VPS Nói một cách khác, ta có thể dịch(convert, map) từ kiểu chữ này qua kiểu chữ kia rất dễ dàng vì có mối liên hệ từng mẫu tự một
Kiểu chữ VNI hơi khác một chút vì có nhiều chỗ người ta dùng 2 bytes để biểu diển một mẫu tự VNI là một trong những bộ chữ đầu tiên được dùng cho chữ Việt trong tin học Điều đáng nói là sự thành công về thương mại của VNI Mặc dầu muốn đánh máy với bộ chữ VNI ta phải trả tiền, công ty VNI tích cực nhất trong việc triển khai các áp dụng phần mềm của VNI để phục vụ khách hàng Trong khi đó các tổ chức Tricholor và VietNamese professionals Society là gồm những khoa học gia thiện nguyện, tất cả đều có việc làm toàn thời gian nên công việc triển khai phần mềm cho các bộ chữ phải bị giới hạn
Trang 23SVTH: Trần Thanh Tùng Trang 22/84 MSSV: 10366374
Sau đây là Bản Mã ký tự để ta đối chiếu giữa 6 bản mã hiển thị được tiếng Việt cĩ dấu
Bảng đối chiếu Encodingcác bộ chữ hiện hành với
x
VISCII
VISCI
I Hex
VNI
VN
I Hex
TCVN
TCV
N Hex
Unicod
e Symbol
Unicod
e Hex Dec
UTF-8 Hexa' á E1 á E1 á 61 F9 ¸ B8 á 00E1 225 C3 A1 a` à E0 à E0 à 61
00E0 224
C3 A0
C3 A3
Trang 24SVTH: Trần Thanh Tùng Trang 23/84 MSSV: 10366374
ặ ¥ A5 £ A3 aë 61 EB Æ C6 ặ 1EB7 7863 E1 BA
E1
BA A7
ẩ Ä C4 ¦ A6 aå 61 E5 È C8 ẩ 1EA9 7849 E1 BA
A9
ẫ Å C5 ç E7 aã 61
1EAB 7851
C3 A9
Trang 25SVTH: Trần Thanh Tùng Trang 24/84 MSSV: 10366374
ế ‰ 89 ª AA eá 65 E1 Õ D5 ế 1EBF 7871 E1 BA
ỏ Õ D5 ö F6 oû 6F FB á E1 ỏ 1ECF 7887 E1 BB
8F
Trang 26SVTH: Trần Thanh Tùng Trang 25/84 MSSV: 10366374
C3 B4
ố Ó D3 ¯ AF oá 6F E1 è E8 ố 1ED1 7889 E1 BB
91
ồ Ò D2 ° B0 oà 6F
1ED3 7891
E1
BB 9D
ở ª AA · B7 ôû F4 FB ë EB ở 1EDF 7903 E1 BB
9F
ỡ « AB Þ DE ôõ F4
1EE1 7905
E1
BB A1
ợ ® AE þ FE ôï F4 î EE ợ 1EE3 E1
Trang 27SVTH: Trần Thanh Tùng Trang 26/84 MSSV: 10366374
A3
u' ú FA ú FA uù 75 F9 ó F3 ú 00FA 250 C3 BA u` ù F9 ù F9 uø 75 F8 ï EF ù 00F9 249 C3 B9
E1
BB A5
Trang 28SVTH: Trần Thanh Tùng Trang 27/84 MSSV: 10366374
E1
BB B9
y œ 9C Ü DC ỵ EE þ FE ỵ 1EF5 7925 E1 BB
B5
dd Ç C7 ð F0 đ F1 ® AE đ 0111 273 C4 91 A' Á C1 Á C1 Á 41 D9 A¸ B841 Á 00C1 193 C3 81 A` € 80 À C0 À 41
D8 Aµ
41
00C0 192
Trang 29SVTH: Trần Thanh Tùng Trang 28/84 MSSV: 10366374
Ẵ ð F0 05 AÜ 41 DC ¡½ BDA1 Ẵ 1EB4 7860 E1 BA
E1
BA A4
Ầ „ 84 … 85 AÀ 41 C0 ¢Ç A2 C7 Ầ 1EA6 7846 E1 BA
E1
BA A8
Ẫ 1C 06 Aà 41 C3 ¢É A2 C9 Ẫ 1EAA 7850 E1 BA
E1
BA
AC
É É C9 É C9 EÙ 45 D9 EÐ D045 É 00C9 201 C3 89 È × D7 È C8 EØ 45
D8 EÌ
45
00C8 200
Trang 30SVTH: Trần Thanh Tùng Trang 29/84 MSSV: 10366374
C3 8C
D8 Oß
4F
00D2 210
C3
92
Trang 31SVTH: Trần Thanh Tùng Trang 30/84 MSSV: 10366374
O? ½ BD ™ 99 Ỏ 4F DB Oá 4F E1 Ỏ 1ECE 7886 E1 BB
Trang 32SVTH: Trần Thanh Tùng Trang 31/84 MSSV: 10366374
Ỡ ¦ A6 ³ B3 ÔÕ D4 D5 ¥ì A5 EC Ỡ 1EE0 7904 E1 BB
C5 A8
Ụ 14 ž 9E UÏ 55 CF Uô 55 F4 Ụ 1EE4 7908 E1 BB
Trang 33SVTH: Trần Thanh Tùng Trang 32/84 MSSV: 10366374
E1
BB B2
Y? ý FD 14 YÛ 59 DB Yû 59 FB Ỷ 1EF6 7926 E1 BB
E1
BB B8
ISO (International Standard Organisation) 10646 là tiêu chuẩn quốc
tế nhằm cung ứng đủ số ký tự để dùng cho mọi chữ của tất cả ngôn ngữ trên thế giới Thay vì dùng 8 bits để biểu diễn chỉ 255 dấu hiệu, bây giờ người ta dùng đến 16 bits để có thể biểu diễn đến trên 65000 dấu hiệu
Hãy tưởng tượng một bài viết có thể chứa nhiều ngôn ngữ cùng một lúc Hay môt chương trình hiển thị các đề mục bằng ngôn ngữ địa phương,
vì khi chương trình phát động nó nhận diện ra ngay là nó đang đuợc chạy ở
xứ nào bằng cách đọc Locale từ Windows
Một trong những ưu điểm của tiêu chuẩn này là sự cố gắng để xác nhập các tiêu chuẩn 8 bit có sẵn để không cần phải thay đổi chúng Thật ra ISO 10646 là tiêu chuẩn quốc tế chính thức, còn Unicode thì được Unicode Consortium (tập hợp đại diện các công ty Tin Học lớn) soạn ra Nhưng cả hai tiêu chuẩn gần như y hệt nhau khi nói đến con số dùng để biểu diễn một chữ, con số nầy đuợc gọi là code point Thí dụ như code point của chữ
ả là 1EA3, của chữ ơ là 01A1 Ðể biểu diễn một code point, tùy theo cách
encoding, có khi ta cần 1, 2, 3 hay 4 bytes v.v., mỗi byte dùng cho code
Trang 34SVTH: Trần Thanh Tùng Trang 33/84 MSSV: 10366374
point người ta không gọi là byte hay octet, mà lại gọi là code unit Thỉnh thoảng, Unicode được cập nhật hóa, và ấn bản mới nhất hiện giờ là 3.0.1
ISO 10646 định nghĩa hai bộ CCS (Coded Character Sets), UCS-2 và UCS-4 UCS-2 dùng 16 bits và là một phần nhỏ (subset) của UCS-4
UCS-4 là một CCS dùng 31bits, chia thành 4 nhóm như sau:
7 bits 8 bits 8 bits 8 bits
1111111 11111111 11111111 11111111
Cái Plane đầu tiên của UCS-4 với giá trị Group=0, Plane=0 cũng là
chính UCS-2 Nó còn đuợc gọi là BMP (Basic Multilingual Plane)
Code points trong UCS thường được viết dưới dạng ử???, mà ????
là con số hexadecimal của code point Characters có giá trị trong khoảng từ ư0021 đến ư007E thì giống như ASCII và các characters trong khoảng
từ ư00A0 đến ư00FF thì giống như ISO 8859-1 Do đó rất dễ cho ta hoán chuyển giữa ASCII hay ISO 8859-1 với UCS Unicode (version 3.0.1) thì dùng 20bit subset của UCS-4 làm Coded Character Set
2.4.2.2 Những Character Encoding Schemes
Có vài Character Encoding Schemes được đưa ra dùng: đó là 8,
UTF-16, UTF-16LE, và UTF-16BẸ UTF là viết tắt chữ Unicode
Transformation Format
UTF-16
UTF-16 là một cách Encoding dùng 20bit Unicodẹ Các characters trong BMP được diễn tả bằng cách dùng giá trị 16bit của code point trong Unicode CCS Có hai cách để viết 16bit value trong một dòng (stream) 8bit Có lẽ bạn đã nghe qua chữ endian Big Endian có nghĩa là cho Most Significant Byte đi trước, tức là nằm bên trái - do đó ta có UTF-16BẸ Còn Little Endian thì ngược lại, tức là Least Significant Byte đi trước - do đó ta
có UTF-16LẸ Thí dụ, giá trị 16bit của cón số Hex1234 được viết là
Hex12 Hex34 trong big endian và Hex34 Hex12 trong little endian
Trang 35SVTH: Trần Thanh Tùng Trang 34/84 MSSV: 10366374
Những characters không nằm trong BMP đuợc biểu diễn bằng cách dùng surrogate pair (cặp thay thế) Code points có giá trị từ u+D800 đến u+DFFF được dành riêng ra để dùng cho mục đích này Trước hết, một code point có 20 bits được phân ra làm hai nhóm 10 bits Nhóm Most Significant 10 bits đuợc mapped vào một giá trị 10bit nằm trong khoảng từ u+D800 đến u+DBFF Nhóm Least Significant 10 bits đuợc mapped vào một giá trị 10bit nằm trong khoảng từ u+DC00 đến u+DFFF Theo cách đó UTF-16 có thể biểu diễn được những characters Unicode có 20bits
UTF-8
UTF-8 là một cách Encoding để có tác dụng y như UCS-4 (cũng là UTF-16), chớ không phải có code point nào khác UTF-8 được thiết kế cho upward-COMpatible với ASCII UTF-8 không phải là chỉ dùng một byte, nhưng là dùng nhiều bytes - từ 1 đến 6 bytes
2.5 Tìm Hiểu Về Internet Explorer
Tổng quan về Internet Explorer
2.5.1 Khái niệm:
Internet Explorer là trình duyệt web (web browser) được phát triển bởi Microsoft được sử dụng để tìm kiếm (search) và xem các file trên world wide web
Internet Explorer là một phần mềm máy tính cung cấp cho người sử dụng khả năng duyệt (browse) world wide web và di chuyển một site, document…tới một nơi khác
Internet Explorer thường được viết tắt là IE hoặc MSIE ( Microsoft Internet Explorer )
2.5.2 Kiến trúc của Internet Explorer
Trang 36SVTH: Trần Thanh Tùng Trang 35/84 MSSV: 10366374
Về bản chất thì kiến trúc của IE là sử dụng component Object Modele (COM) Vì vậy nó cho phép người thứ ba thêm các tính năng mà
IE không cung cấp thông qua Browser Helper Object (HBO) và cho phép các website hiển thị được nhiều document khác nhau ( như : trang HTML, Doc file, PDF file, EXL files…) thông qua các ActiveX, đồng thời nó cũng cho phép chúng ta dễ dàng tái sử dụng các thành phần của IE
Các thành phần của IE được chia làm 5 mức:
+ IExplorer.exe : ở mức trên cùng, là một chưng trình có khả năng thực thi Nó là một ứng dụng nhỏ điều khiển các thành phần của IE để thực hiện công việc của mình như : hiển thị, điều hướng, hiện thực giao thức
+ BrowserUI.dll cung cấp các giao diện người sử dụng cho IE như : address bar, menu bar, Status bar…
+ ShDocVw.dll cung cấp các tính năng như điều hướng và History
Nó thường được xem như là một Web Browser Control DLL này được bọc lộ các giao diện ActiveX Control, cho phép chúng ta dễ dàng làm chủ DLL trong một ứng dụng Microsoft windows sử dụng khung làm việc (Frameworks) Microsoft Visual Basic, Microsoft Foundation Classes (MFC), Active Template Library (ATL), hoặc Microsoft NET windows Forms Khi ứng dụng của chúng ta làm chủ được webbrowser Control, nó
sẽ đạt được tất cả các tính năng của IE trừ giao diện người sử dụng được cung cấp bởi BrowserUI.dll
Trang 37SVTH: Trần Thanh Tùng Trang 36/84 MSSV: 10366374
+ MSHTML.dll : là trái tim của IE, nó có nhiệm vụ phân tích và hiển thị trang HTML và Cascading Style Sheets (CSS) MSHTML.dll bộc
lộ các giao diện cho phép chúng ta làm chủ nó giống như một Active Document Active document là một ActiveX dùng để hiển thị nội dung các file đặc biệt nào đó trong IE Ví dụ như khi người sử dụng duyệt một trang HTML thì MSHTML.dll active document được sử dụng để hiển thị trang HTML, nhưng nếu sau đó người sử dụng điều hướng từ một trang HTML đến một Word document thì mshtml.dll active document được loại ra thay vào đó là một active của Word
+ URLMon.dll cung cấp các tính năng cho việc sử lý Multipurpose Internet Mail Extensions (MIME) và code download
Multipurpose Internet Mail Extension (MIME) là một chuẩn mở rộng của giao thức truyền tải mail đơn giản (Simple Mail Transport Protocól-SMTP) cho việc mã hóa các file dữ liệu không phải ASCII (non ASCII) như video, sound, và các chương trình máy tính Với MIME chúng ta có thể trao đổi các thông điệp thư tín điện tử ( electronic mail messages) với nhiều nội dung hơn ( như : video, sound…) xuyên qua các mạng không đồng nhất, các máy, và các môi trường e-mail
+ WinInet.dll là bộ xử lý giao thức Windows Internet (Windows internet protocol handler) Nó hiện thực các giao thức HTTP và File Transfer Protocol (FTP) cùng với việc quản lý cache (cache management)
2.6 Tìm Hiểu Về COM
2.6.1 Khái niệm COM
COM là một chuẩn nhị phân ( binary standard – DLL hay EXE) được định nghĩa bởi Microsoft
COM là một kiến trúc phần mềm thành phần (COMponent software architecture) cho phép các ứng dụng và các hệ thống có thể được xây dựng dựa trên các thành phần được cung cấp bởi các người phát triển phần mềm khác nhau cho dù các thành phần đó được viết bằng các ngôn ngữ lập trình khác nhau
Global Unique Identifier (GUID)
GUID là một chuỗi 128-bit dùng để định danh duy nhất một coclass hay interface GUID còn được gọi là UUID (universally unique identification)
Trang 38SVTH: Trần Thanh Tùng Trang 37/84 MSSV: 10366374
Các thành phần của một ứng dụng COM
Khi hiện hiện thực một ứng dụng COM, chúng ta cần cung cấp các phần sau:
+ COM interface: là cách để một đối tượng bộc lộ các dịch vụ của
nó tới client Một COM object cung cấp một interface cho mỗi tập các method có quan hệ với nhau ( các hàm thành viên của đối tượng) và các thuộc tính
+ COM server: là một module ở dạng một file EXE, DLL, hoặc OCX, nó được dùng để chứa mã lệnh cho một COM object Các đối tượng này cư ngụ ở trong các server Mỗi COM object hiện thực một hay nhiều interfaces
+ COM client: là một chương trình gọi các method trong interfaces
để lấy các dịch vụ được yêu cầu từ server Client biết các dịch vụ được cung cấp bởi server thông qua interface; các client không biết các dịch vụ của server được hiện thực bên trong như thế nào
2.6.2 Các vấn đề khi dùng chung NET và COM với nhau
COM có những quy định nghiệm ngặt quản lý việc cài đặt đối tượng Để COM sử dụng được các phương thức của đối tượng NET một cách hiệu quả, chúng ta cần phải tuân theo các quy luật của COM
Vấn đề thường gặp :
- COM không hổ trợ những phương thức khởi tạo có thông số
- COM không hổ trợ xây dựng những phương thức phi thể hiện kiểu như phương thức static
COM hỗ trợ xây dựng kiểu giá trị, NET cũng làm điều này Tuy nhiên các kiểu giá trị trong COM không có các thể hiện của phương thức như trong NET và ngay cả trong C++
2.6.3 NET hỗ trợ COM
Vì các đoạn mã tự quản lý(Managed code) sử dụng sử dụng những dịch vụ được cung cấp bởi thành phần COM, bạn sẽ không tìm thấy CoInitialize và CoCreateInstance bên trong kiến trúc NET Môi trường NET giới thiệu khái niệm gọi COM thông qua lớp vỏ bọc – Runtime Callable Wrapper (RCW) Các đoạn mã của NET sẽ gọi đối tượng COM thông qua RCW và Managed COMponent
Trang 39SVTH: Trần Thanh Tùng Trang 38/84 MSSV: 10366374
RWC có trách nhiệm bảo vệ người phát triển từ những tác vụ như tham chiếu bộ đếm(reference counting), tự động cấp phát hoặc giải phóng bộ nhớ
Trách nhiệm của RWC bao gồm những công việc sau:
- Bảo đảm việc nhận diện đối tượng
- Duy trì thời gian sống của đối tượng
- Giao tiếp trung gian giữa đối tượng với COM và NET
- Gọi các phương thức Marshaling
- Cho phép gọi các giao tiếp COM hiện có
RWC cung cấp một số cơ chế cho phép những chương trình quản lý bởi NET truy xuất vào các giao tiếp không được quản lý của COM RWC thực thi tất cả những giao tiếp được cung cấp bởi đối tượng COM Từ đó cho phép phương thức giao tiếp triệu gọi mà không cần phải ép kiểu tường minh cho giao tiếp đó
Trang 40SVTH: Trần Thanh Tùng Trang 39/84 MSSV: 10366374
Chương 3 : Phân Tích Đề Tài
3.1 Phân Tích Nội Dung:
Từ yêu cầu của đề tài, ta chia nội dung công việc làm 4 phần chính :
• Việt hóa giao diện Internet Explorer
• Viêt Plug-Ins và Đăng ký sự kiện với IE
• Duyệt trang HTML ( phục vụ cho nhu cầu )
• Chuyển nội của trang HTML về bản mã Unicode
3.1.1 Cách Thức Việt Hóa Giao Diện :
Trước tiên chúng ta sẽ tìm hiểu về cách việt hóa giao diên
Câu hỏi đặt ra : tại sao phải việt hóa giao diện ?
Ngày nay khi mà nhu cầu cuộc sống tăng cao, hầu như mọi thành phần đều sử dụng chương trình và phần mềm máy tính Thế nhưng đa số các phần mềm đang sử dụng đề xuất phát từ nước ngoài ví dụ như : Microsoft Word, Exel, hay các phần mềm kế toán…vvv Vì phần phần mềm phục vụ
có nhiều thành phần như : nhân viên văn phòng, sinh viên hay các trường phổ thông
Chính vì vậy, mà nhu cầu việt giáo giao diện các phần mềm là một nhu cầu thực tế cần có nhằm phục vụ cho người sử dụng khi ta làm việc với một phần mềm mang ngôn ngữ của ta sẽ dễ dàng và thân thiện hơn nhiều so với ngôn ngữ khác, từ đó ta có thể tìm hiểu tất cả các tính năng và tiện ích
mà phần mềm cung cấp đôi khi cũng có những suy nghĩ ngược lại, một số người cho rằng dùng phần mềm tiếng anh thì dể sử dụng hơn Nhưng dù sao
đi nữa thì đó cũng là lý do mà chúng ta phải tìm hiểu về các giải pháp để việt hóa giao diện của một phần mềm hay một ứng dụng nào đó
Cụ thể hơn với yêu cầu đề tài là việt hóa giao diện Internet Explorer Thật may khi chúng ta đã liên kết với tập đoàn Microsoft, và Microsoft cũng
đã cho ra hệ điều hành windows tiếng việt trong đó Microsoft đã chỉ dẩn các file dll để tham chiếu tới hệ thông ngôn ngữ, trong đó có tiếng việt của chúng ta Đó là là các file: acctres.dll, browselc.dll, inetcplc.dll, inetres.dll, mshtmler.dll, msidntld.dll, msoeres.dll, shdoclc.dll