Showing posts with label Windows. Show all posts
Showing posts with label Windows. Show all posts

Sunday, December 27, 2009

Đồng bộ dữ liệu giữa các ổ đĩa trên máy tính

Nếu bạn thường xuyên sử dụng Flash USB để sao chép dữ liệu giữa máy tính cá nhân và máy tính cơ quan, chắc chắn rằng sẽ có lúc bạn “quên” chép một vài thứ quan trọng. Để khắc phục tình trạng này, có thể sử dụng tiện ích miễn phí SyncToy 2.1 của Microsoft.


Với SyncToy, toàn bộ dữ liệu của bạn sẽ được tự động đồng bộ hóa, bạn chỉ cần gắn Flash USB vào máy tính cần chép dữ liệu rồi để SyncToy làm tất cả mọi việc. SyncToy có 2 phiên bản dành cho Windows 32 bit và 64 bit, tải tại .


Sau khi tải về và cài đặt thành công, bạn bấm chuột vào biểu tượng của SyncToy trên desktop để khởi động chương trình, từ giao diện làm việc của SyncToy, bạn nhấn chuột vào nút Create New Folder Pair. Một cửa sổ hiện ra, tại đây bạn hãy nhấn nút Browse trong khung Left Folder và Right Folder rồi chọn 2 thư mục hoặc ổ đĩa mà bạn muốn chúng tự động đồng bộ dữ liệu với nhau, trong đó Left Folder là thư mục “gốc” (có thể là trên Flash USB) và Right Folder là thư mục “copy”. Nhấn Next để xác nhận.


Trong cửa sổ “What do you want to do?”, bạn hãy lựa chọn một trong các kiểu đồng bộ dữ liệu sau:


- Synchronize: Tự động cập nhật lại nội dung cho cả 2 thư mục để chúng hoàn toàn giống nhau về nội dung và hình thức.


- Echo: Cập nhật và bổ sung các tập tin, thư mục từ thư mục “gốc” mà hiện tại thư mục copy chưa có, đồng thời xóa bỏ các tập tin trùng lắp.


- Contribute: Tương tự như mục Echo nhưng thay vì xóa các tập tin trùng lắp thì nó lại đặt tên khác cho các tập tin này.

Sau khi lựa chọn xong kiểu đồng bộ dữ liệu, nhấn Next để xác nhận. Một cửa sổ hiện ra, tại đây bạn hãy nhập một tên gọi vào ô Name your folder pair rồi nhấn nút Finish để hoàn tất.


Lúc này, bạn sẽ được đưa tới một cửa sổ với tên gọi chính là tên mà bạn vừa đặt. Tại đây, bạn nhấn chuột vào nút Run để bắt đầu quá trình đồng bộ hóa dữ liệu. Để thay đổi kiểu đồng bộ dữ liệu, bạn nhấn chuột vào liên kết Change action rồi lựa chọn lại kiểu đồng bộ trong cửa sổ hiện ra.

Sunday, November 1, 2009

Xây dựng ứng dụng Internet trên Visual Basic 6

Visual Basic 6.0 hỗ trợ lập trình Internet. Bạn có thể thêm nội dung động đến những trang Web một cách dễ dàng. Những ứng dụng Internet trong Visual Basic liên kết mã Visual Basic với một hoặc nhiều trang HTML và xử lý những sự kiện xảy ra trên những trang đó bằng cách tương tác với những chương trình trên Client hoặc Server. Bạn có thể tạo hai kiểu ứng dụng ứng dụng Internet trong Visual Basic đó là ứng dụng DHTML hoạt động phần lớn ở Client và ứng dụng IIS hoạt động phần lớn ở Server. Trong bài này, bạn sẽ học về cách tạo ứng dụng DHTML.


Xem lại Internet và HTML

Internet là toàn cầu, mạng máy tính được phân bố trên khắp thế giới hoạt động dựa trên giao thức TCP/IP. Intranet cũng là mạng máy tính hoạt động dựa trên giao thức TCP/IP, nhưng nó không phải là toàn cầu. Nói chung, Intranet được giới hạn cho một bộ những người sử dụng riêng biệt và không thể truy xuất bởi thế giới bên ngoài. Một công ty có thể chạy Intranet để cung cấp thông tin chỉ cho những nhân viên của mình, và chạy Internet độc lập đối với những người sử dụng bên ngoài. Những người sử dụng bên trong công ty có thể truy xuất cả Intranet và Internet, nhưng những người sử dụng bên ngoài công ty chỉ có thể truy xuất site Internet của công ty mà thôi.

Những tổ chức Intranet dễ dàng phân phối thông tin, như là thông tin đơn đặt hàng của khách hàng, dữ liệu buôn bán, v.v… cho những nhân viên trong khi ngăn cản sự truy xuất dữ liệu từ bên ngoài. Nếu sử dụng một cách hợp lý thì Intranet có thể là công cụ rất hữu dụng.

HTML (Hypertext Markup Language) là ngôn ngữ để hiển thị những file.htm trong Web browser trên Internet. File.htm là một tài liệu văn bản mà chứa một số thẻ để nói cho browser cách hiển thị file. Những thẻ HTML này cung cấp thông tin về cấu trúc, diện mạo, và nội dung của trang.

Visual Basic và sự phát triển Internet

Cách thông thường để hiểu về sự phát trển Internet là bằng mối quan hệ giữa Client và Server. Client là browser trên PC, và Server là Web server. Phần lớn sự tương tác của Internet có thể hiểu là nhóm những yêu cầu và đáp ứng. Browser gởi yêu cầu đến Web server (thông thường là yêu cầu hiển thị trang mà người sử dụng muốn xem) và Web server trả về đáp ứng (thông thường là trang HTML, phần tử như là file, hoặc hình ảnh) đến browser.

Những trình thiết kế Web thường tạo những trang HTML, nhưng bạn cũng có thể tạo chúng chung với môi trường phát triển ứng dụng Visual Basic của bạn. Khi bạn tạo ứng dụng Internet trong Visual Basic, giao diện người dùng là trang HTML đặc trưng hơn là form. Về mặt nào đó, file.htm tương tự với.frm của Visual Basic.

Cách tạo ứng dụng Dynamic HTML

DHTML là cộng nghệ mở rộng của Internet Explorer 4.x mà cho phép những chuyên viên thiết kế và những người sử dụng tương tác với những trang Web theo những cách khác nhau. Sự thuận lợi chính của DHTML là hầu hết quá trình xử lý có thể được thực hiện trên Client mà không chuyển quá trình xử lý đến Server.

Ứng dụng DHTML là ứng dụng Visual Basic mà sử dụng sự kết hợp giữa DHTML và mã Visual Basic được biên dịch để tương tác với nhau, hay còn gọi là ứng dụng browser-based. Những ứng dụng DHTML phải chạy trên Internet Explorer 4.x.

Theo dạng đơn giản nhất, ứng dụng DHTML có thể là một trang HTML mà sử dụng mã Visual Basic và mô hình đối tượng Dynamic HTML để đáp ứng ngay lập tức những hành động mà xảy ra trên trang. Điều này có thể bao gồm:
  • Đáp ứng những hành động user-initiated như là di chuyển hoặc click chuột.

  • Đáp ứng hành động mà thực hiện bởi chính browser như là mở trang hoặc nạp hình.
Trong ứng dụng DHTML phức tạp, bạn có thể:
  • Truy lục dữ liệu từ trang và sử dụng nó để truy vấn cơ sở dữ liệu.

  • Cập nhật diện mạo và cách hoạt động của trang.

  • Tạo những phần tử HTML và thêm chúng vào trang theo đáp ứng cho những yêu cầu của user.
Những ứng dụng DHTML sử dụng mã Visual Basic để thực hiện quá trình xử lý hầu như giống nhau mà trước đây bạn có thể thực hiện bằng những phương thức khác của sự phát triển ứng dụng Internet, như là JavaScript hoặc CGI. Bạn viết mã Visual Basic để xử lý những sự kiện mà xảy ra khi trang được xem trong browser. Bạn có thể đáp ứng những sự kiện mà xảy ra trên bất kỳ phần tử nào trên trang ¾ như là click button, nạp hình, di chuyển chuột lên trên một phần nào đó của trang, v.v…. Trong khi phần lớn quá trình xử lý được kết hợp với ứng dụng DHTML xảy ra trên máy Client, nhưng ứng dụng cũng có thể thực hiện lời gọi đến Server.

Những sự thuận lợi của ứng dụng DHTML

Sự thuận lợi chính của ứng dụng này là nó kết hợp sức mạnh và năng lực của DHTML và những control và mã của Visual Basic. Sự thuận lợi khác là sự duy trì những tài nguyên Server vì hầu như quá trình xử lý được thực hiện ở Client. Điều này cũng làm cho việc refresh hoặc đáp ứng đến người sử dụng nhanh hơn. Hơn nữa, bạn có thể sử dụng ứng dụng DHTML ngoại tuyến (offline) thông qua cache của browser. Sự bảo mật ứng dụng của bạn cũng là sự thuận lợi. Khi bạn nhúng những script vào trong trang HTML, bất kỳ người nào cũng có thể truy xuất trang Web của bạn, đọc script, và tạo những thay đổi đến nó. Nhưng khi sử dụng Visual Basic để triển khai ứng dụng DHTML của bạn, mã của bạn được biên dịch, nó không là một bộ phận trong trang HTML của nó, và không thể dễ dàng lục lọi.

Cách sử dụng Trình thiết kế trang DHTML

Để tạo ứng dụng DHTML, bạn sử dụng Trình thiết kế trang DHTML của Visual Basic (xem hình ii.1) để tạo những trang Web mà hoạt động như là giao diện người dùng cho ứng dụng của bạn. Bạn có thể viết mã Visual Basic và dán nó vào trang Web hoặc thêm trang Web hiện hữu vào trong Trình thiết kế và sửa đổi nó. Cửa sổ Treeview của Trình thiết kế ở phía bên trái hiển thị sự trình bày có thứ bậc tất cả những phần tử bên trong trang HTML. Khung chi tiết ở phía bên phải trình bày mặt về nơi mà bạn có thể tạo trang mới hoặc hiệu chỉnh những nội dung của trang hiệu hữu.



Hình II.1 Trình thiết kế trang DHTML

Chú ý Có một mối quan hệ một một giữa Trình thiết kế trang DHTML và trang HTML Nếu bạn muốn sử dụng nhiều hơn một trang HTML trong ứng dụng của bạn, bạn có thể thêm nhiều Trình thiết kế trang DHTML đến đề án của bạn bằng cách click Add DHTML Page trên menu Project.


Đây là những bước cơ bản để tạo ứng dụng DHTML trong Visual Basic:
  1. Tạo đề án mới trong Visual Basic sử dụng mẫu DHTML Application: Ngầm định đề án của bạn gồm có một Trình thiết kế trang DHTML và một modul mã.

  2. Tạo trang HTML hoặc sử dụng trang HTML hiệu hữu làm giao diện người dùng cho ứng dụng của bạn.

  3. Gán thuộc tính ID để nhận dạng duy nhất cho mọi phần tử, như là TextField hoặc Button trên trang HTML mà bạn muốn truy xuất để có thể lập trình được.

  4. Viết mã để thêm chức năng đến ứng dụng của bạn.

  5. Kiểm tra và debug ứng dụng của bạn như là bạn làm với bất kỳ ứng dụng Visual Basic nào khác: Khi bạn bắt đầu ứng DHTML của bạn từ Visual Basic, nó chạy trong Internet Explorer, nhưng bạn vẫn có thể debug mã của bạn trong môi trường Visual Basic.

  6. Biên dịch ứng dụng của bạn, và sử dụng Package and Deployment Wizard để đóng gói thành những file DLLvà những file hỗ trợ cho sự triển khai.

Cách sửa đổi HTML bằng DHTML

Trong HTML, những thẻ cung cấp những sự hướng dẫn định dạng. Ví dụ, tiêu đề mức ba được viết như sau <H3>My Heading</H3>. Những thẻ H3 xác định kích thước của văn bản mà được hiển thị trong browser.

Trong DHTML, bạn có thể bao gồm thêm thông tin cho những thẻ HTML này để điều khiển và sửa đổi diện mạo của trang. ID là thuộc tính trong DHTML mà gán nhận dạng duy nhất cho tiêu đề và làm cho nó có thể lập trình được. Ví dụ sau trình bày thuộc tính ID được thêm vào thẻ HTML:

<H3 ID=Subheadl>My Heading</H3>

Trong ứng dụng Visual Basic, bạn có thể thay thế văn bản tùy biến trang HTML của người sử dụng hoặc thay đổi diện mạo hoặc sự định dạng văn bản trên trang HTML. Trong ứng dụng DHTML, bạn xử lý những sự thay thế văn bản khác hơn. Trong ứng dụng DHTML, bạn có thể thực hiện những sự thay đổi văn bản động, cũng như những thẻ HTML, vào lúc thực thi.

Bạn phải chỉ rõ bạn thay thế văn bản HTML hiện hành bằng văn bản thô hoặc văn bản mà bao gồm những thẻ HTML thêm vào. Hơn nữa, bạn phải chỉ ra những thẻ HTML gốc cho phần tử nên được tác động bởi sự thay thế. Bạn làm điều này bằng cách thiết lập hai thuộc tính: innerText và outerText, innerHTML và outerHTML.

Để thay đổi văn bản bên trong những thẻ HTML, sử dụng những thuộc tính innerText hoặc innerHTML. InnerText cung cấp sự thay đổi để hệ thống chèn như là văn bản thô, mà không thực hiện bất kỳ sự phân tách nào. InnerHTML cung cấp những sự thay thế văn bản và thêm vào những thẻ HTML mà phải được phân tách và được chèn vào giữa những thẻ HTML gốc. Ví dụ:


Sử dụng InnerText

Thẻ HTML gốc

<H3 ID=Subhead1>My Heading</H3>

Sử dụng thuộc tính innerText

Subhead1.innerText = "Heading One"

Kết quả HTML

<H3 IS=Subhead1>Heading One</H3>



Sử dụng innerHTML

Thẻ HTML gốc

<H3 ID=Subhead1>My Heading</H3>

Sử dụng thuộc tính innerHTML

Subhead1.innerHTML = "<I>Heading One</I>"

Kết quả HTML

<H3 Subhead1>&ltI>Heading One</I></H3>


Để thay đổi cả hai văn bản và những thẻ HTML gốc xung quanh phần tử, sử dụng hai thuộc tính gọi là outerText và outerHTML. Cả hai thuộc tính thay thế văn bản được chứa đựng trong HTML đối với phần tử cụ thể và những thẻ phần tử của chúng.

Ví dụ về cách tạo ứng dụng DHTML

Trong ví dụ này, bạn sẽ tạo một ứng dụng DHTML sử dụng trình thiết kế trang DHTML:

Để tạo đề án DHTML

  1. Tạo đề án mới trong Visual Basic sử dụng mẫu đề án DHTML Applocation.:Cửa sổ Project Explorer xuất hiện.

  2. Double-click thư mục Designers, sau đó double-click DHTMLPage1:DHTML Page designer xuất hiện.

  3. Click vào khung Detail, nhập Mortgage Payment Calculator, sau đó nhấn Enter.

  4. Nhập văn bản được trình bày trong hình II.2.

  5. Đặt con trỏ sau Total:, nhấn F4 và thiết lập thuộc tính ID là TotalPayment.

  6. Nhấn phím Enter ba lần để thêm những hàng trống sau Total.

  7. Từ thanh công cụ HTML (xem hình II.3 ), thêm ba control TextField và một control Button vào khung Detail.



Hình II.2 Ví dụ về sự bố trí văn bản


Hình II.3 Thanh công cụ HTML

  1. Thiết lập những thuộc tính sau cho những control mới. Hình II.4 minh họa cách bố trí những control.

Control

Thuộc tính

Giá trị

TextField1

ID

LoanAmt


Value

Để trống


Title

Loan Amount

TextField2

ID

Interest


Value

Để trống


Title

Interest Rate

TextField3

ID

Term


Value

Để trống


Title

Term

Button1

ID

Calculate


Value

Calculate




Hình II.4 Ví dụ về cách bố trí control

  1. Double-click button Calculate và thêm đoạn mã sau:

Dim MonthPmt As Double

MonthPmt = Pmt(Val((Interest.Value)/100)/12, Val(Term.Value), Val(LoanAmt.Value))

TotalPayment.innerText = "Your monthly payment is:"& Format(MonthPmt, "currency")

  1. Lưu ứng dụng với tên file ngầm định đến thư mục \Practice\Ch11.

  2. Kiểm tra ứng dụng bằng cách nhấn F5. Trong hộp hội thoại Project Properties, chọn DHTMLPage1 như là thành phần khởi tạo, sau đó click OK.

  3. Nhập những giá trị sau vào trang Web, sau đó click Calculate.









Field

Giá trị

Loan Amount:

150000

Interest Rate:

7

Term:

360

  1. Kết quả giá trị bằng $997.95.

Cách tạo ứng dụng IIS sử dụng WebClass

Ứng dụng IIS là ứng dụng Web Server-side được tạo trong Visual Basic. Nó sử dụng một trong những tính năng mới trong Microsoft Visual Basic 6.0: khả năng bao gồm WebClasses trong những đề án. WebClass đại diện cho mã mà có thể chạy trên Internet Server, và cho bạn khả năng đặt mã sau URLs. WebClasses cung cấp phương tiện để bạn tạo những ứng dụng Server-side mà được làm chủ bởi IIS và có thể được xem trên những Web browser của Client.

Bởi vì sự phát triển Web nhấn mạnh sự tách biệt những thành phần trong ứng dụng theo logic, kiểu trình bày, cấu trúc điều hướng, và nội dung hoặc trạng thái, bạn có thể sử dụng WebClasses để tách ứng dụng logic theo sự trình bày (giao diện người dùng) của ứng dụng. Điều này giúp bạn tạo nhiều ứng dụng phân phối bằng cách thêm những thành phần Web để phân phối một phần chức năng thông qua những Web browser.

Tổng quan về ứng dụng IIS

Ứng dụng IIS ở trên Web Server và đáp ứng cho những yêu cầu từ browser. Ứng dụng sử dụng HTML để trình bày giao diện người dùng của nó và mã Visual Basic được biên dịch để xử lý những yêu cầu và đáp ứng cho những sự kiện ở browser.

Người sử dụng xem ứng dụng IIS như là một chuỗi những trang HTML. Chuyên viên thiết kế xem nó như là WebClass mà cấu thành những WebItems. WebClass là thành phần Visual Basic mà cư trú ở trên Web Server và đáp ứng đối với dữ liệu vào từ browser. WebItem là phần tử mà có thể được trả về browser như là một phần của đáp ứng cho yêu cầu HTTP. WebItem là trang HTML thông thường, nhưng nó cũng có thể là file MIME-type, như là image, file.wav, v.v…

Trong ứng dụng IIS, bạn không thể sử dụng Visual Basic để tạo những trang HTML mà cấu thành giao diện người dùng cho ứng dụng. Trình thiết kế Web hoặc chuyên viên thiết kế tạo những trang sử dụng trình soạn thảo HTML, gói xử lý từ, hoặc trình soạn thảo văn bản, và bạn liên kết những trang hoàn tất vào trong WebClass của bạn.

Bảng sau đây tóm tắt những sự khác nhau giữa ứng dụng forms-based và ứng dụng Web-based:


Phần tử

Ứng dụng forms-based

Ứng dụng Web-based

Giao diện người dùng

Những form Visual Basic

Những trang HTML

Những phần tử giao
diện người dùng

Những Control

Những phần tử

Dạng file

Những file.frm

Những file.htm

Người thiết kế

Chuyên viên thiết kế

Trình thiết kế Web hoặc
chuyên viên thiết kế Visual
Basic

Run Time

Visual Basic IDE Windows

Web browser


Cấu trúc của ứng dụng IIS

Ứng dụng IIS được cấu trúc khác với những ứng dụng Visual Basic chuẩn, forms-based. Giao diện người dùng gồm có một chuỗi những trang HTML hơn là những form Visual Basic truyền thống. Trang HTML giống form Visual Basic ở chỗ nó chứa tất cả những phần tử trực quan mà cấu thành giao diện người dùng cho ứng dụng. Bạn có thể đặt một số mục tương tự lên trên trang như bạn làm với form, bao gồm những text, button, check box, và option button.

Ứng dụng IIS gồm có một vài bộ phận. Một số bộ phận trong số này được tạo một cách tự động khi bạn xây dựng đề án của bạn. Những bộ phận này bao gồm:

  • Một hoặc nhiều WebClass, cái mà được tạo tự động khi bạn tạo đề án WebClass.

  • Một hoặc nhiều phần tử HTML và những sự kiện của chúng.

  • Một hoặc nhiều custom WebItem và những sự kiện của chúng.

  • Một file.asp (Active Server Pages) mà làm chủ WebClass trong IIS. File.asp được tạo tự động khi bạn tạo đề án WebClass; Visual Basic đặt tên cho nó giống với thuộc tính NameInURL do bạn chỉ định.

  • Một thành phần run-time của WebClass, Mswcrun.dll, cái mà giúp xử lý yêu cầu.

  • Một đề án DLL (được tạo tự động trong lúc biên dịch) để chứa mã Visual Basic và nó được truy xuất bởi thành phần run-time.
Chú ý Để sử dụng đề án mẫu IIS Application, bạn phải có Internet Information Server hoặc Personal Web Server được cài đặt trên máy của bạn. Bạn có thể có được hai dịch vụ này bằng cách cài đặt NT Option Pack.

Hình II.5 trình bày cách những phần server của ứng dụng IIS làm việc với nhau.




Hình II.5 Cấu trúc của ứng dụng IIS

Giống như những ứng dụng Visual Basic khác, ứng dụng IIS có những module mã và một Trình thiết kế trực quan. Những đối tượng ứng dụng IIS được lưu trong những file văn bản thuần tuý để chứa mã nguồn của WebClass, những sự kiện, những sự thiết lập thuộc tính, và WebItem cho WebClass. Visual Basic sử dụng file có phần mở rộng.dsr cho những file này. Ngoài file.dsr, Visual Basic còn tạo ra file.dsx để chứa phiên bản nhị phân của ứng dụng.

Cách sử dụng WebClass để đáp ứng những yêu cầu của Client

WebClass là thành phần COM của Visual Basic mà gửi thông tin đến Web browser từ Internet Server. Nó là đơn vị trung tâm của ứng dụng, xử lý dữ liệu từ browser và gửi thông tin đến những người sử dụng. Bạn định nghĩa một chuỗi những thủ tục mà xác định cách WebClass đáp ứng cho những yêu cầu này. Một WebClass điển hình chứa những WebItem cái mà nó sử dụng để cung cấp nội dung đến browser theo đáp ứng cho yêu cầu, và đưa ra những sự kiện. WebItem có thể là một trong hai cái sau:

File HTML template

File HTML template là trang HTML cái mà bạn kết hợp với WebClass của bạn. Khi WebBlass nhận yêu cầu, nó có thể gửi trang HTML đến browser để hiển thị. Những template khác với những trang HTML bình thường ở chỗ chúng thường chứa những vùng thay thế cái mà WebClass có thể xử lý trước khi gửi trang đến browser. Điều này cho phép bạn tùy biến đáp ứng của bạn.

Custom WebItem

Custom WebItem không có trang HTML được kết hợp nhưng nó có thể trả về cho người sử dụng. Để thay thế, custom WebItem là tài nguyên chương trình gồm có một hoặc nhiều trình xử lý sự kiện mà được nhóm lại với nhau một cách hợp lý để giúp tổ chức ứng dụng Web của bạn. Những trình xử lý sự kiện này được gọi từ browser, khi trang nạp hoặc khi người sử dụng chọn phần tử HTML. Những trình xử lý sự kiện có thể tạo đáp ứng đến browser hoặc chuyển quá trình xử lý đến những WebItem của WebClass khác.

Cách viết mã để đáp ứng cho những sự kiện

Cả template và custom WebItem đều có thể gây ra những sự kiện có giá trị để WebClass xử lý khi những hành động nào đó xảy ra trên browser. Bạn có thể viết những thủ tục sự kiện cho những sự kiện này sử dụng mã Visual Basic chuẩn, sau đó liên kết những hành động mà xảy ra trên trang Web đến quá trình xử lý Visual Basic.

Mọi WebClass có thể chứa nhiều template và WebItem. Trong hầu hết những ứng dụng, bạn chỉ cần một WebClass. Bạn có thể sử dụng nhiều WebClass nếu bạn muốn chia ứng dụng của bạn vào trong những phần mà có thể được sử dụng lại trong những ứng dụng khác.

WebClass và file.asp

Mọi WebClass trong ứng dụng IIS có một file.asp được kết hợp cái mà Visual Basic tạo ra một cách tự động trong quá trình biên dịch hoặc debug. File.asp làm chủ WebClass trên Web server. Ngoài ra, nó còn tạo thành phần run-time cho WebClass khi ứng dụng được bắt đầu lần đều tiên, và khởi chạy sự kiện đầu tiên trong chu kỳ sống của WebClass.

WebClass được kết hợp với chỉ một Client trong chu kỳ sống của nó. Visual Basic tạo ví dụ hợp lý của WebClass cho mọi Client mà truy xuất nó. Đối với mọi Client WebClass có thể duy trì trạng thái giữa những yêu cầu. Hình II.6 trình bày mối quan hệ giữa những file.asp, WebClass, và những nội dung của WebClass.


Hình II.6 Cách WebClass liên kết với ASP và những WebItem

Cách sử dụng Trình thiết kế WebClass

Trình thiết kế WebClass là công cụ thiết kế trong Visual Basic mà cho phép bạn tạo và sửa đổi nhanh chóng những WebItem cái mà đại diện cho những trang HTML trong ứng dụng của bạn. Bạn sử dụng trình thiết kế để:

  • Định nghĩa những nội dung của WebClass. WebClass chứa những WebItem, là những trang HTML và những mục khác mà WebClass có thể gửi đến browser theo đáp ứng cho yêu cầu của người sử dụng.

  • Thêm những sự kiện đến những WebItem trong WebClass.

  • Viết mã cho mọi sự kiện trong WebClass.
Trình thiết kế WebClass gồm có hai khung. Khung Treeview ở phía bên trái hiển thị những WebItem cái mà cấu thành WebClass. Những WebItem đại diện cho những trang trên IIS server của bạn. Những trang này là những điểm mục nhập vào trong khoảng tên (namespace) của Server. Khoảng tên của Server là tập hợp của những ký hiệu, như là những tên file, tên thư mục, hoặc những khoá cơ sở dữ liệu, được lưu trong cấu trúc phân cấp. Khung chi tiết ở phía bên phải hiển thị thông tin về mục được chọn hiện hành trong khung Treeview. Hình II.7 minh họa những WebItem bên trong WebClass.


Hình II.7 Trình thiết kế WebClass

Để tạo ứng dụng IIS trong Visual Basic
  1. Tạo đề án mới trong Visual Basic sử dụng đề án mẫu IIS Application: Ngầm định đề án gồm có một trình thiết kế WebClass và một module mã. Một sự tham chiếu được thiết lập tự động đến thư viện đối tượng Microsoft Active Server Page.

  2. Tạo những custom WebItem để đại diện cho mọi trang trong ứng dụng của bạn, hoặc nhập vào những trang HTML hiện hữu như là những WebItem.

  3. Định nghĩa chức năng cho ứng dụng của bạn bằng cách thêm mã đến những WebItem và sự kiện Start của WebClass của bạn.

  4. Kiểm tra và debug ứng dụng của bạn như bạn làm với bất kỳ ứng dụng Visual Basic khác: Khi bạn bắt đầu ứng dụng IIS của bạn từ Visual Basic, nó sẽ chạy trong Internet Explorer, nhưng bạn vẫn debug mã của bạn trong môi trường Visual Basic.

  5. Biên dịch ứng dụng của bạn, và sử dụng Package and Deployment Wizard để đóng gói đề án của bạn thành file.dll và những file hỗ trợ cho sự phân phối.
Để tạo custom WebItem
  1. Trên thanh công cụ WebClass, click Add Custom WebItem, như được minh họa trong hình II.8: WebItem mới xuất hiện ở dưới cùng trong danh sách của những custom WebItem torng khung Treeview của Trình thiết kế WebClass.



Hình II.8 Nút Add Custom WebItem trên thanh công

  1. Nhập tên cho WebItem mới.

Để nhập vào trang HTML hiện hữu như là WebItem

  1. Trên thanh công cụ WebClass, click Add HTML Template WebItem:Hộp thoại Add HTML Template xuất hiện :

  2. thêm như là WebItem, sau đó click Open.WebItem mới xuất hiện ở dưới cùng trong danh sách của những HTML ng thẻ trong trang HTML được liệt kê như là những đối tượng bạn có thể sử dụng trong mã của bạn.
Nhập tên cho WebItem mới.

Cách viết mã cho WebClass

Trước đây WebClass là thành phần COM, bạn sử diên lạc với Web browser. Khi WebClass xử lý yêu cầu từ browser, nó phải gửi cho browser đáp ứng. Thông thường, đáp ứng đó là một chuỗi HTML để browser hiển thị cho người sử dụng. Bạn có thể trả về HTML cho browser theo hai cách:

  • Gửi những nội dung của file HTML template trực tiếp đến browser sử dụng phương thức WriteTemplate.

  • Chế tạo một chỗi HTML bằng mã Visual Basic.
Trong những custom WebItem, bạn sử dụng phương thức Write của đối tượng Response để viết chuỗi thông tin đến Web browser. Ví dụ sau viết tiêu đề cho Web browser:

Response.Write "<H1>Welcome to My Web Site!</H1>"

Trong những HTML template WebItem, bạn sử dụng phương thức WriteTemplate của WebItem để viết toàn bộ những nội dung của WebItem đến Web browser. Phương thức WriteTemplate là cách đơn giản để gửi HTML đến browser theo đáp ứng cho hành động của người sử dụng. Khi WebClass khởi chạy thủ tục sự kiện đối với sự kiện template mà chứa phương thức này, nó gửi HTML của template trở lại browser. Kết quả trang hiển thị cho người sử dụng. Ví dụ sau viết những nội dung của WebItem tên là Welcome đến Web browser:

Welcome.WriteTemplate

Cách Debug và Triển khai ứng dụng IIS

Giống như những tài liệu DHTML, bạn debug ứng dụng IIS của bạn sử dụng những công cụ debug chuẩn trong Visual Basic. Khi bạn chạy ứng dụng của bạn từ môi trường Visual Basic, những trang HTML mà hoạt động như là giao diện người dùng được mở trong Internet Explorer. Tuy nhiên, bạn vẫn debug mã của bạn sử dụng môi trường phát triển tích hợp (IDE) của Visual Basic.

Khi bạn biên dịch ứng dụng của bạn, Visual Basic tạo ra một file.dll và một file.asp mà đại diện cho thành phần COM của bạn trên Internet server. Bạn có thể sử dụng Package and Deployment Wizard để đóng gói ứng dụng của bạn để phân phối. Wizard nén thành phần COM và bất kỳ những file hỗ trợ vào trong file.cab, và cung cấp cho bạn cơ hội đánh dấu thành phần của bạn là an toàn. Bạn có thể sử dụng wizard tương tự để triển khai file.cab và.asp của bạn đến Server trên mạng hoặc đến thư mục. Khi bạn đánh dấu control an toàn cho quá trình tạo ra bộ điều khiển, bạn bảo đảm rằng không một tập chỉ lệnh nào có thể tạo ra control làm hỏng máy tính hoặc dữ liệu của người sử dụng. Những control được đánh đấu an toàn cho quá trình tạo ra bộ điều khiển không nên cho phép lấy thông tin trái phép từ máy tính của người sử dụng và cũng không làm hỏng hệ thống của họ.

Sự tích hợp giữa Visual Basic và những công cụ Web khác

Bạn đã được biết về cách Visual Basic có thể được sử dụng để tạo những thành phần lớp giữa thông qua WebClass. Bây giờ chúng ta xem lại cách lập trình Web và thành phần của bạn ăn khớp như thế nào.

Cách lập trình Web có hai phần. Một là lập trình HTML hoặc DHTML để browser hiển thị. Hai là cách lập trình Server. Bạn có thể sử dụng Visual Basic 6.0 cùng với Microsoft FrontPage hoặc Microsoft Visual InterDev để tạo những trang Web. Sau đó bạn có thể nhập những trang Web trực tiếp vào trong Trình thiết kế WebClass trong Visual Basic, và viết mã cho những trang Web mà truy xuất đến Server. Bạn có thể sử dụng DHTML như là lối vào cho WebClass. DHTML sử dụng HTTP như là cơ chế của nó để liên lạc với Web Server.

FrontPage và Visual InterDev là những công cụ rất tốt để quản lý và xây dựng những Web site, trong khi Visual Basic thích hợp cho việc xây dựng những ứng dụng hơn nhưng nó có thể bao gồm Web client mà truy xuất như là một phần của chức năng của nó. Visual Basic thêm giá trị cho sự phát triển Web bởi vì nó cho phép bạn tạo những ứng dụng cơ sở dữ liệu và truy xuất những thành phần COM và những dịch vụ như Microsoft Message Queue Server.

Cách sử dụng WebClass để tạo những ứng dụng phân phối

Lớp giữa (middle tier) trong mô hình ba lớp (three-tiered) là lớp thành phần, nơi mà ứng dụng logic được lưu. WebClass ở lớp giữa cùng với ứng dụng logic mà có thể truy xuất qua HTTP, Microsoft Message Queue Server (MSMQ), hoặc mô hình đối tượng thành phần phân phối (DCOM). Ngoài ra, WebClass có thể sử dụng ADO để kết nối đến những nguồn dữ liệu OLE DB, bao gồm cả những nguồn dữ liệu có cấu trúc như là SQL Server và những nguồn dữ liệu không có cấu trúc như là Microsoft Index Server.

Với Visual Basic 6.0, bạn có thể xây dựng những ứng dụng phân cấp thực sự, như là những Web site với nhiều hơn một máy tính đầu cuối như là những Server và hàng ngàn máy Client liên lạc với nó thông qua những Web browser.

Visual Basic 6.0 hỗ trợ cách tạo những đối tượng trên những máy tính ở xa qua DCOM, liên lạc với những Server qua HTTP thông qua những WebClass, và hỗ trợ liên lạc giữa những máy tính sử dụng những giao thức mức thấp như là Winsock. Ngoài ra, Visual Basic có thể sử dụng MSMQ để liên lạc giữa những máy tính. Với MSMQ, bạn có thể có những lớp module được tạo trong Visual Basic 6.0 và vẫn sử dụng chúng trực tiếp lên trên hàng đợi để phân phối ngay lập tức hoặc sau đó đến máy tính khác.

Download ActiveX Components

Visual Basic cho phép bạn sử dụng công nghệ ActiveX để tạo những thành phần mà có thể được sử dụng trên những trang HTML. Những thành phần này có thể là những control (những file.ocx), những thành phần mã (những file.exe và.dll) mà chạy trên Client, hoặc những ActiveX document (những file.vbd) mà chức năng như là trang HTML.

Những bước chuẩn bị để download thành phần của bạn

Khi bạn chuẩn bị những ActiveX component cho Internet download, bạn phải đóng gói nó vào một file mà có thể phân phối cho browser của người sử dụng. Ngoài ra, bạn phải thực hiện một vài bước đề phòng để chắc chắn rằng những người sử dụng khi download những thành phần đó thì phần mềm của bạn sẽ không làm hỏng máy tính của họ.

Có năm bước chung để chuẩn bị ActiveX control, thành phần mã và ActiveX document cho Internet download. Bảng sau đây cho biết những bước và dạng những thành phần ActiveX cho mọi bước thích ứng.

Step ActiveX

Controls
(.ocx files)

Code
Components
(.exe/.dll files)

ActiveX
Documents
(.vbd files)

Ký hiệu số phần mềm để có thể phân
phối được.

X

X

X

Kiểm tra mức an toàn của phần mềm.

X

X

X

Chuẩn bị cấp giấy phép cho những
mục mà đòi hỏi nó.

X



Đóng gói những mục để download.

X

X

X

Kiểm tra download của bạn.

X

X

X


Ký hiệu số

Một cách kiểm tra cả nội dung và nguồn của một file có giá trị cho download qua Internet. Kiểm tra nội dung cho phép bạn kiểm tra nội dung của file mà bạn download phù hợp với nội dung của file khi bạn thiết kế. Kiểm tra nguồn cho phép bạn chắc chắn rằng file đến từ nguồn đáng tin.

Sự cài đặt an toàn cho những thành phần ActiveX

Sự cài đặt an toàn được sử dụng để bảo đảm cho người sử dụng rằng ActiveX control sẽ tương tác an toàn với máy tính của họ và dữ liệu của nó. Khi bạn phân phối những ActiveX control cho Internet component download, bạn phải chỉ định mức an toàn cho nó. Nếu bạn không làm, và những control của bạn làm hỏng máy tính của người sử dụng hoặc làm hỏng dữ liệu của họ, bạn có thể phải chịu trách nhiệm trước pháp luật nếu những control được ký hiệu.

Bạn có thể phòng ngừa những vấn đề này bằng cách xác nhận rằng mã của bạn an toàn và đánh dấu nó theo cách thông thường. Có hai mức cho sự an toàn trong Internet component download:

  • An toàn cho khởi tạo (initialization)

  • An toàn cho script.
Chú ý Sự cài đặt an toàn chỉ áp dụng cho những thành phần được download trong Internet Explorer.

An toàn cho khởi tạo

Khi bạn đánh dấu một control an toàn cho khởi tạo, bạn bảo đảm rằng nó sẽ không làm tổn hại máy tính của người sử dụng cuối cùng, bất kể dữ liệu gì hoặc những script được sử dụng để khởi tạo nó. Control đó là an toàn cho khởi tạo thì không viết hoặc thay đổi bất kỳ mục registry, những file.ini hoặc file dữ liệu như là kết quả của thông số khởi tạo. An toàn cho khởi tạo không đòi hỏi về sự an toàn cho những phương thức của control, đặc tính run-time, hoặc thông tin có giá trị cho người viết tập chỉ lệnh.

Ngầm định, Internet Explorer hiển thị một cảnh báo và không download những control mà không được đánh dấu an toàn cho script và khởi tạo. Bạn có thể chọn lựa phần mềm của bạn là an toàn cho script và khởi tạo khi bạn sử dụng Package and Deployment Wizard trong Visual Basic để đóng gói nó cho việc phân phối trên Internet.

An toàn cho quá trình tạo ra bộ điều khiển

Khi bạn đánh dấu một control là an toàn cho quá trình tạo ra bộ điều khiển (scripting), bạn bảo đảm rằng không một tập chỉ lệnh (script) nào gây ra điều khiển có hại cho máy tính hoặc dữ liệu của người sử dụng. Những control được đánh dấu là an toàn cho quá trình tạo ra bộ điều khiển không nên thu những thông tin trái phép từ máy tính của người sử dụng hoặc làm hỏng hệ thông của họ.

Cài đặt mức an toàn cho những thành phần ActiveX

Có hai cách bạn có thể cài đặt mức an toàn cho những thành phần download được của bạn. Cách đơn giản nhất là sử dụng Package and Deployment Wizard để đánh dấu những file.cab củ bạn là an toàn. Sự chọn lựa khác là sử dụng IObjectSafety interface để nói với Client rằng mã của bạn là an toàn.

Ví dụ về cách đưa ActiveX Component lên trang Web

Để đưa những ActiveX lên trang Web

  1. Thiết kế phần mềm, và chỉ rõ mức an toàn cho phần mềm.

  2. Xây dựng phần mềm.

  3. Xây dựng file.cab sử dụng Package and Deployment Wizard, và thiết lập cờ an toàn.

  4. Ký hiệu số file.cab.

Signcode -prog myfilename -name displayname -info http://www.mycompany.com - spc mycredentials.spc -pvk myprivatekey.pvk

  1. Đưa file.cab lên trang Web.

<OBJECT

CLASSID="clsid:25BDF09D-EC8B-11CF-BD97-00AA00575603"

CODEBASE="/Controls/MyContrl.cab#version=1,0,0,0"

ID=MyContrl>

</OBJECT>

  1. Kiểm tra file.cab.

WINDOWS API 5 - Xử lý của API khi làm việc với phần cứng và hệ thống

Để thuận lợi cũng như để mọi người cùng học tập và tham gia xây dựng đề án "Xây dựng bộ gõ tiếng Việt tăng tốc" chúng ta hãy làm quen với các hàm API liên quan đến vấn đề này. Mong rằng đây sẽ là cơ sở cơ bản để chúng ta cùng tiếp cận tìm hiểu cơ chế xây dựng một bộ gõ tiếng Việt đơn giản tại Website Lê Hoàn. Bạn có thể xem các hàm liên quan đến UNICODE hoặc các bài học cơ bản ban đầu Visual Basic tại trang http://www.bangden.com/soncuoc. Chi tiết và ví dụ các hàm bạn có thể tìm ở trang này.

1. Các hàm với chuột, con trỏ

Visual Basic cung cấp sự yểm trợ cho chuột và trỏ chuột (Trỏ chịu sự tác động của chuột thường để điều khiển) cũng như trỏ thanh (Trỏ chịu tác động của bàn phím thường để nhập liệu), tại một thời điểm chỉ có duy nhất một trỏ chuột và một trỏ thanh. Theo ngầm định, vị trí của trỏ chuột và trỏ thanh tính theo toạ độ của màn hình.

Windows cung cấp khả năng hạn chế con chuột vào một vùng khai báo trên màn hình gọi là clipping. Có hai hàm cơ bản là:

1. Declare Function ClipCursor Lib "user32" Alias "ClipCursor" (lpRect As Any) As Long

Công dụng: Giới hạn trỏ chuột đối với vùng chỉ định.

Tham số kèm:

LpREct - Vùng trỏ chuột định vị.

2. Declare Function GetClipCursor Lib "user32" Alias "GetClipCursor" (lprc As RECT) As Long

Công dụng: Nhận hình chữ nhật làm vùng làm việc cho trỏ chuột.

Tham số kèm:

Lprc - Hình chữ nhật nhận vùng làm việc.

Để nhận vị trí trỏ chuột, hay đặt trỏ chuột vào một vị trí ta sử dụng hai hàm:

3. Declare Function GetCursorPos Lib "user32" Alias "GetCursorPos" (lpPoint As POINTAPI) As Long

Công dụng: Xác định vị trí hiện tại của con trỏ chuột.

Tham số kèm:

LpPoint - Cấu trúc tiếp nhận toạ độ con trỏ trên màn hình.

4. Declare Function SetCursorPos Lib "user32" Alias "SetCursorPos" (ByVal x As Long, ByVal y As Long) As Long

Công dụng: Đặt con trỏ chuột vào một vị trí.

Tham số kèm:

X, Y Toạ độ màn hình cần đặt vị trí.

Các con trỏ theo ý muốn có thể được tạo từ cặp bitmap đơn sắc, kích thước có thể tới 32x32 pixel, nó có một cán 16 bit quản lý.

Khi ở một vị trí nào đó, ta thao tác chuột như click, d-click, hoặc drag. Các thao tác này sẽ ảnh hưởng đến một cửa sổ X nào đó. Ngay sau đó cửa sổ X này sẽ được nhận focus ngay cả khi trước đó nó đã mất focus. Vì vậy, cửa sổ này còn được gọi là capture (Hay cửa sổ đón chặn hay cửa sổ chộp).

Các hàm liên quan đến trỏ chuột cơ bản gồm:

5. Declare Function CopyCursor Lib "user32" Alias "CopyCursor" (ByVal hcur As Long) As Long

Công dụng: Copy thêm một trỏ chuột.

Tham số kèm:

hCur Cán của trỏ chuột cần sao chép.

6. Declare Function GetCapture Lib "user32" Alias "GetCapture" () As Long

Công dụng: Xác định cửa sổ đón chặn các tình huống chuột.

Trị trả về: Integer - Cán cửa sổ chặn tình huống chuột. Zero nếu không có cửa sổ nào.

7. Declare Function GetCursor Lib "user32" Alias "GetCursor" () As Long

Công dụng: Nhận cán của trỏ chuột hiện tại.

Trị trả về: Integer cán của trỏ chuột hiện tại. Zero nếu không có trỏ chuột hiện tại.

8. Declare Function GetDoubleClickTime Lib "user32" Alias "GetDoubleClickTime" () As Long

Công dụng: Xác định thời gian 2 lần nháy của thủ tục Dclick.

Trị trả về: Thời gian tính theo mili giây.

9. Declare Function LoadCursor Lib "user32" Alias "LoadCursorA" (ByVal hInstance As Long, ByVal lpCursorName As String) As Long

Công dụng: Tải một trỏ chuột.

Tham số kèm:

HInstance Cán của chương trình mô tả trỏ chuột

LpCursorName - Chỉ số ID nguồn. Căn cứ vào chỉ số này mà trỏ sẽ có hình dáng khác nhau. Đây là những hình dáng ngầm định của hệ thống.

IDC_APPSTARTING - Trỏ khi một ứng dụng khởi động

IDC_NO - Trỏ khi không thực hiện việc nào.

IDC_SIZE - Trỏ khi thay đổi cỡ một đối tượng.

IDC_SIZEALL - Trỏ khi thay đổi tất cả cỡ của các đối tượng

IDC_SIZENESW - Trỏ là hình mũi tên 2 chiều chéo góc xuống dốc

IDC_SIZENS - Trỏ là hình mũi tên 2 chiều dọc.

IDC_SIZENWSE - Trỏ là hình mũi tên 2 chiều chéo lên dốc

IDC_SIZEWE - Trỏ là hình mũi tên 2 chiều ngang

IDC_UPARROW - Trỏ là hình mũi tên lên

IDC_WAIT - Trỏ là đồng hồ cát

IDC_ARROW: Trỏ hình mũi tên.

IDC_CROSS: Trỏ hình dấu thập.

IDC_IBEAM: Trỏ hình thanh chữ I

IDC_ICON: Biểu tượng rỗng.

10. Declare Function LoadCursorFromFile Lib "user32" Alias "LoadCursorFromFileA" (ByVal lpFileName As String) As Long

Công dụng: Tải một hình dáng trỏ chuột từ tệp bên ngoài được khai báo

Trị trả về: Integer - Zero nếu thành công.

Tham số kèm:

LpFileName - Cán của tệp mô tả hình dáng trỏ.

11. Declare Function ReleaseCapture Lib "user32" Alias "ReleaseCapture" () As Long

Công dụng: Tải bỏ việc chặn đối với chuột.

12. Declare Function SetCapture Lib "user32" Alias "SetCapture" (ByVal hwnd As Long) As Long

Công dụng: Thiết lập việc chặn con chuột đối với cửa sổ.

Trị trả về: Integer là cán của cửa sổ trước đó đang chặn chuột. Zero nếu không có cửa sổ nào chặn trước đó.

Tham số kèm:

hwnd - Cán của cửa sổ cần thiết lập để chặn.

13. Declare Function SetCursor Lib "user32" Alias "SetCursor" (ByVal hCursor As Long) As Long

Công dụng: Đặt con trỏ hiện tại.

Trị trả về: Integer - Trị số mô tả trỏ trước đó.

Tham số kèm:

HCursor - Cán của con trỏ cần đặt làm hiện tại.

14. Declare Function SetDoubleClickTime Lib "user32" Alias "SetDoubleClickTime" (ByVal wCount As Long) As Long

Công dụng: Đặt thời gian giữa hai lần bấm của thao tác Dclick.

Tham số kèm:

WCount - Thời gian cần đặt, tính theo miligiây.

15. Declare Function ShowCursor Lib "user32" Alias "ShowCursor" (ByVal bShow As Long) As Long

Công dụng: Hiện hay giấu con trỏ trên màn hình.

Trị trả về: Số nguyên DP báo số lần hiển thị. Mỗi lần sử dụng hàm này để hiện trỏ DP sẽ được cộng 1. Mỗi lần giấu đi DP sẽ trừ 1. Nếu DP âm trỏ không được hiện.

Tham số kèm:

BShow - Trị số điều khiển. Nếu dương, để hiện. Số 0 để dấu.

16. Declare Function SwapMouseButton Lib "user32" Alias "SwapMouseButton" (ByVal bSwap As Long) As Long

Công dụng: Kiểm tra sự tráo đổi chức năng 2 phím chuột.

Trị trả về: Integer - True nếu đã bị hoán đổi. False nếu vẫn chưa bị đổi.

Tham số kèm:

BSwap - Đặt là True để đổi. Đặt là False để không đổi.

2. Các mã quét và phím ảo:

Các phím trên bàn phím tạo ra các mã quét (scan code) tuỳ thuộc vào vị trí của chúng. Khi ta tác động vào phím, bàn phím sẽ gửi mã quét của phím đó cho máy tính. Do có nhiều loại bàn phím khác nhau nên Windows đưa ra khái niệm phím ảo (virtual key) là phím không phụ thuộc vào vị trí của từng loại bàn phím, giúp cho việc thống nhất xử lý. Ví như bạn nhấn phím Enter, ở bất cứ bàn phím nào, ở vị trí nào vẫn là phím đó, chứ không liên quan đến vị trí như mã quét.

Do đó ta có thể hiểu vấn đề này như sau:

Khi một phím được nhấn, Windows sẽ nhận được tín hiệu và chuyển đổi thông tin mã quét của bàn phím thành một mã phím ảo. Phần xử lý phím ảo sẽ chịu trách nhiệm chuyển tiếp hình ảnh của ký tự được nhấn, sau khi đã căn cứ vào trạng thái của phím Shift.

Các hàm xử lý bàn phím bao gồm:

17. Declare Function GetAsyncKeyState Lib "user32" Alias "GetAsyncKeyState" (ByVal vKey As Long) As Integer

Công dụng: Nhận tình trạng của phím ảo được khai báo.

Trị trả về: Integer - Bit 0 là 1 nếu phím đã được nhấn kể từ lần gọi hàm này gần đây nhất. Ngược lại là Zero. Bit 15 là 1 nếu phím đang nhấn xuống, hay zero nếu thả ra.

Tham số kèm:

VKey Mã của phím cần kiểm tra (Xem bảng mã key code các phím)

18. Declare Function GetKBCodePage Lib "user32" Alias "GetKBCodePage" () As Long

Công dụng: Nhận trang mã Windows cần chuyển đổi giữa các bộ ký tự.

Trị trả về: Integer - Là các trị số chỉ trang mã.

19. Declare Function GetKeyboardState Lib "user32" Alias "GetKeyboardState" (pbKeyState As Byte) As Long

Công dụng: Nhận trạng thái phím ảo của bàn phím.

Trị trả về: Đọc trạng thái ghi vào biến cần lưu.

Tham số kèm:

PbKeyState - Biến dạng byte (Là chuỗi có chiều dài có thể lưu trữ 256 ký tự) nhằm lưu giá trị để nhận tình trạng các phím. Giá trị này phải được hiểu là nhị phân, căn cứ vào bit 0 của các đoạn tương ứng với các phím Caplock, NumLock, Scroll Lock, nếu là 1 sẽ là đang bật, còn bit 7 các phím thường, nếu nhấn xuống là 1, giá trị 0 là thả ra.

20. Declare Function GetKeyboardType Lib "user32" Alias "GetKeyboardType" (ByVal nTypeFlag As Long) As Long

Công dụng: Nhận kiểu bàn phím đang dùng.

Trị trả về: Integer - Zero nếu có lỗi. Các số khác chỉ loại bàn phím đăng ký.

Nếu cờ bằng 0, trị trả về:

1 - Tương ứng bàn phím 83 phím

2 - Tương ứng 102 phím

3 - Tương ứng 84 phím

4 - Tương ứng 101 -102 phím (IBM)

5 - Tương ứng Nokia 1050

6 - Tương ứng Nokia 9140

7 - Tương ứng tiếng Nhật.

Nếu cờ bằng 1, trị trả về tuỳ thuộc hãng sản xuất.

Nếu cờ bằng 2, trị trả về:

1, 3, 5 - Tương ứng bàn phím 10 phím chức năng.

2 - Tương ứng bàn phím 12 hoặc 18 phím chức năng.

4 - Tương ứng bàn phím 12 phím chức năng.

6 - Tương ứng bàn phím 24 phím chức năng.

7 - Do hãng sản xuất quy định.

Tham số kèm:

NTypeFlag - Cờ xác định kiểu dữ liệu cần lấy.

21. Declare Function GetKeyNameText Lib "user32" Alias "GetKeyNameTextA" (ByVal lParam As Long, ByVal lpBuffer As String, ByVal nSize As Long) As Long

Công dụng: Nhận tên của phím.

Trị trả về: Chiều dài của tên phím nhận được trong lpBuffer

Tham số kèm:

LParam Là một số mà bit từ 0 - 5 đặt là 0. Bít 16 - 23 đặt mã quét của phím cần xác định tên, bít 24 - Bít mở rộng trên những bàn phím nâng cao. Bit 25 - Khi gán bằng 1, bỏ qua sự khác biệt giữa các phím trái, phải.

LpBuffer Chuỗi được gán trước để nhận tên phím. Nên có nSize + 1 bytes.

NSize Chiều dài tối đa của chuỗi.

22. Declare Function GetKeyState Lib "user32" Alias "GetKeyState" (ByVal nVirtKey As Long) As Integer

Công dụng: Nhận trạng thái phím ảo.

Trị trả về: Bit 0 là 1 khi các phím như Caplock, NumLock, ScrollLock là bật, nếu bit 0 là 0, các phím này tắt.

Bit 15 là 1, nếu phím đang bị nhấn, bit 15 là 0 nếu vừa nhả.

Tham số kèm:

NVirtKey - Mã phím ảo để kiểm tra

23. Declare Function MapVirtualKey Lib "user32" Alias "MapVirtualKeyA" (ByVal wCode As Long, ByVal wMapType As Long) As Long

Công dụng: Thực hiện những sự chuyển đổi mã quét và ký tự tuỳ thuộc vào kiểu ánh xạ cung cấp.

Trị trả về: Tuỳ thuộc vào kiểu ánh xạ yêu cầu, trị trả về theo bảng sau

WCode là

Giá trị của VMapType

0

1

2

Mã phím ảo

Mã quét tương ứng



Mã quét


Mã phím ảo tương ứng


Mã phím ảo



Trị ASCII tương ứng.

Tham số kèm:

WCode - Giá trị nguồn cần chuyển đổi.

WMapType - Điều khiển kiểu chuyển đổi.

24. Declare Function MapVirtualKeyEx Lib "user32" Alias "MapVirtualKeyExA" (ByVal uCode As Long, ByVal uMapType As Long, ByVal dwhkl As Long) As Long

Công dụng Hàm dịch mã phím ảo thành một mã quét hoặc giá trị ký tự, hoặc dịch một mã quét thành mã phím ảo. Chức năng dịch các mã dùng cho ngôn ngữ nhập và định dạng vị trí.

Tham số kèm:

Parameters

uCode

Mã phím ảo hoặc mã quét của một phím. Giá trị này phải tương ứng với uMapType.

uMapType

[in] Kiểu dữ liệu cần dịch. Giá trị này phải phù hợp với tham số uCode trên.

Các giá trị 0, 1, 2 như bảng trên.

Riêng giá trị bằng 3 chỉ sử dụng cho Windows NT/2000 trở lên: uCode là một mã quét và được dịch thành mã phím ảo để phân biệt giữa những phím bên tay trái và những phím bên tay phải. Nếu điều này không dịch, hàm trả về 0

dwhkl

[in] Định vị vị trí nhập để sử dụng cho việc dịch các mã đặc biệt. Tham số này có thể là bất kỳ giá trị định vị vị trí trước đó mà đã nhận được từ hàm LoadKeyboardLayout

Trị trả về

Hoặc là một ã quét, môt mã phím ảo hoặc một giá trị ký tự tuỳ thuộc vào uCode uMapType. Nếu điều này không được dịch, hàm trả về zero.

Một ứng dụng có thể dùng MapVirtualKeyEx để dịch các mã quét thành các hằng mã phím ảo như VK_SHIFT, VK_CONTROL, và VK_MENU, và ngược lại. Quá trình dịch không do not phân biệt giữa các phím trá hay phải của các phím SHIFT, CTRL, hoặc ALT. Còn Windows NT/2000 trở lên thì phân biệt, nó sẽ chuyển được thành các hằng mã phím ảo như:

VK_LSHIFT
VK_RSHIFT
VK_LCONTROL
VK_RCONTROL
VK_LMENU
VK_RMENU

Sự phân biệt này ảnh hưởng tới các hàm GetKeyboardState, SetKeyboardState, GetAsyncKeyState, GetKeyState, MapVirtualKey, và chính MapVirtualKeyEx . Xin xem bảng mã phím ảo Virtual-Key Codes.

25. Declare Function OemKeyScan Lib "user32" Alias "OemKeyScan" (ByVal wOemChar As Long) As Long

Công dụng: Nhận mã quét và trạng thái Shift đối với một ký tự ASCII trong bộ ký tự OEM.

Trị trả về: Từ thấp chứa mã quét. Từ cao đưa ra các cờ hiệu thông qua các bit. Bit 0 nếu bằng 1, phím Shift bị nhấn. Bit 1 là 1 cho biết Ctrl bị nhấn.

Tham số kèm:

WOemChar - Giá trị ASCII của ký tự cần chuyển đổi.

26. Declare Function SetKeyboardState Lib "user32" Alias "SetKeyboardState" (lppbKeyState As Byte) As Long

Công dụng: Đặt trạng thái phím ảo. Thường sử dụng để đặt trạng thái phím CaspLock, NumLock, ScrollLock.

Tham số kèm:

lppbKeyState - Biến con trỏ 256 byte chứa trạng thái bàn phím.

27. Declare Function ToAscii Lib "user32" Alias "ToAscii" (ByVal uVirtKey As Long, ByVal uScanCode As Long, lpbKeyState As Byte, lpwTransKey As Long, ByVal fuState As Long) As Long

Công dụng: Xác định trị ASCII của một phím ảo dựa trên các trạng thái phím Shift và phím điều khiển.

Trị trả về:

Nếu phím cần kiểm tra là phím chết, giá trị trả về là số âm. Trường hợp khác là một trong các giá trị sau:

0 - Phím ảo cần kiểm tra không được dịch trong trạng thái hiện hành của bàn phím.

1 - Một ký tự được copy vào buffer

2 - Hai ký tự được copy vào bufer, trường hợp này xảy ra khi một phím nhấn chết, và gõ một phím khác.

Tham số kèm:

UVirtKey - Phím ảo cần chuyển đổi.

UScanCode - Mã quét của phím hoặc phím cần chuyển đổi. Bit cao của giá trị được thiết lập nếu phím nhả.

LpbKeyState - Biến trỏ tới mảng 256 byte chỉ trạng thái bàn phím hiện tại. Mỗi byte trong mảng chứa trạng thái của một phím. Nếu bit cao của một byte được thiết lập là phím được nhấn xuống. Với bit thấp được thiết lập, tín hiệu được đảo là ON. Trường hợp này chỉ dùng cho CAPSLOCK. Còn SCROLLOCK và NUMLOCK bị bỏ qua.

LpwTransKey - Biến con trỏ chỉ tới buffer mà nhận giá trị kết quả sau khi dịch.

FuState - Cờ hiệu, trạng thái thực đơn được kích hoạt. Nếu là 1 là được kích hoạt, ngược lại 0.

28. Declare Function ToAsciiEx Lib "user32" Alias "ToAsciiEx" (ByVal uVirtKey As Long, ByVal uScanCode As Long, lpKeyState As Byte, lpChar As Integer, ByVal uFlags As Long, ByVal dwhkl As Long) As Long

Như trên riêng dwhkl dùng để định vị trí nhập, dùng cho chuyển mã.Tham số này nhận được bất cứ vị trí định vị nào trước đó đã được trả về từ hàm LoadKeyboardLayout

29. Declare Function VkKeyScan Lib "user32" Alias "VkKeyScanA" (ByVal cChar As Byte) As Integer

Công dụng: Dịch ký tự phím ảo tùy thuộc trạng thái phím shift hiện tại.

Trị trả về: Nếu hàm thành công, byte thấp của giá trị trả về chứa mã phím ảo, và byte cao chứa trạng thái Shift, căn cứ vào bảng sau

Bit

Nghĩa là

1

Bất cứ SHIFT key bị nhấn

2

Bất cứ CTRL key bị nhấn.

4

Bất cứ ALT key bị nhấn.

8

The Hankaku key bị nhấn

16

Dành riêng (Được định nghĩa bởi driver).

32

Dành riêng (Được định nghĩa bởi driver).

Nếu hàm không tìm thấy phím nào để dịch thì bỏ qua mã ký tựcả hai byte thấp và cao đều chứa –1.

30. Declare Function VkKeyScanEx Lib "user32" Alias "VkKeyScanExA" (ByVal ch As Byte, ByVal dwhkl As Long) As Integer

Như trên riêng dwhkl dùng để định vị trí nhập, dùng cho chuyển mã.Tham số này nhận được bất cứ vị trí định vị nào trước đó đã được trả về từ hàm LoadKeyboardLayout

3. Tiếp theo là các hàm điều khiển nhập liệu:

31. Declare Function GetInputState Lib "user32" Alias "GetInputState" () As Long

Công dụng: Nhận trạng thái nhập liệu, kiểm tra xem có tình huống chuột hoặc bàn phím đang chờ xử lý không.

Trị trả về: True - Nếu có trường hợp cần xử lý đang chờ.

32. Declare Function GetQueueStatus Lib "user32" Alias "GetQueueStatus" (ByVal fuFlags As Long) As Long

Công dụng: Nhận loại chỉ lệnh cần xử lý trong hàng đợi đợi ứng dụng.

Trị trả về: Từ cao là tập cờ 16 bit, khai báo các chỉ lệnh ở hàng đợi. Từ thấp cho biết các loại chỉ lệnh được thêm vào.

Tham số kèm:

FUFlags - Tập cờ yêu cầu cần kiểm tra chỉ lệnh là một từ thông qua các bit. Là một trong các hằng số sau:

QS_ALLEVENTS = Tất cả các mức (QS_INPUT hoặc QS_POSTMESSAGE hoặc QS_TIMER hoặc QS_PAINT hoặc QS_HOTKEY)

QS_ALLINPUT = Tấ cả phần nhập liệu (QS_SENDMESSAGE hoặc QS_PAINT hoặc QS_TIMER hoặc QS_POSTMESSAGE Hoặc QS_MOUSEBUTTON Hoặc QS_MOUSEMOVE Hoặc QS_HOTKEY Hoặc QS_KEY)

QS_HOTKEY - Phím nóng.

QS_INPUT - Phần nhập (QS_MOUSE Hoặc QS_KEY)

QS_KEY - Các chỉ lệnh phím.

QS_MOUSE = Các chỉ lệnh chuột (QS_MOUSEMOVE Hoặc QS_MOUSEBUTTON)

QS_MOUSEBUTTON - Chỉ lệnh liên quan đến nút chuột.

QS_MOUSEMOVE - Di chuyển bằng chuột

QS_PAINT - Chỉ lệnh vẽ.

QS_POSTMESSAGE - Chỉ lệnh được phát đi.

QS_SENDMESSAGE - Chỉ lệnh được chuyển từ ứng dụng khác.

QS_TIMER - Timer.

33. Declare Function GetQueuedCompletionStatus Lib "kernel32" Alias "GetQueuedCompletionStatus" (ByVal CompletionPort As Long, lpNumberOfBytesTransferred As Long, lpCompletionKey As Long, lpOverlapped As Long, ByVal dwMilliseconds As Long) As Long

Công dụng: Nhận trạng thái chỉ lệnh đã hoàn thành xếp hàng trong hàng đợi hệ thống

Trị trả về: @

Tham số kèm:

CompletionPort - Cán cổng hoàn thành. Để tạo một cổng hoàn thành sử dụng hàm CreateIoCompletionPort

LpNumberOfBytesTransferred - Biến con trỏ chỉ vào một biến nhận về số byte trao đổi trong tác vụ vào ra đã hoàn thành.

LpCompletionKey - Biến con trỏ chỉ vào biến nhận về phím đã hoàn thành tác vụ vào ra. Một phím hoàn thành là một giá trị nhận từ hàm CreateIoCompletionPort

LpOverlapped - Biến con trỏ chỉ tới biến ghi lại vị trí của địa chỉ cấu trúc OVERLAPPED được thiết lapaj khi tác vụ hoàn thành được bắt đầu.

DwMilliseconds - Số mili giây gọi để chờ cho tác vụ hoàn thành.

34. Declare Function IsDBCSLeadByte Lib "kernel32" Alias "IsDBCSLeadByte" (ByVal bTestChar As Byte) As LongDeclare

35. Function IsDBCSLeadByte Lib "kernel32" Alias "IsDBCSLeadByte" (ByVal TestChar As Byte) As Long

Công dụng: Kiểm tra xem có phải là ký tự đầu tiên trong bộ ký tự 2 byte.

Trị trả về: True nếu là byte đầu của ký tự thuộc bộ ký tự 2 byte.

Tham số kèm:

BTestChar - Ký tự cần kiểm tra.