Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 11 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
11
Dung lượng
264,5 KB
Nội dung
Xây dựng chơng trình để khởi động các chơng trình khác
Nhập Dẫn
Để bày vẻ và quảng cáo thêm cho máy tính có rất nhiều cách. Nhng nếu bạn là ngời chuyên ráp máy
hay một cửa hàng tin học thì có lẻ bạn nên viết 1 chơng trình tự động chạy lúc khởi động (Start Up) để
trng bày các phần mềm đã cài đặt trên máy, luôn tiện giới thiệu chút ít về mình hay cửa hàng. Ta tạm
đặt tên cho chơng trình đầu tiên này là "Launch" nhé.
Viết chơng trình, có rất nhiều ngôn ngữ lậptrình d sức để viết một chơng trình nh vậy. Nhng dễ dàng
hơn hết, có lẻ và Visual Basic. Viết chơng trình này bằng Visual Basic không đòi hỏi gì bạn nhiều, chỉ
cần chút khéo léo và áp dụng các công cụ của Visual Basic một cách thích hợp cộng thêm chút ít sáng
tạo mà thôi.
Chơng trình Launch đã hoàn tất
Có rất nhiều cách để phân loại các phần mềm cài đặt trên máy. Chơng trình thí dụ này phân nhóm các
ứng dụng cài đặt trong Windows thành 3 nhóm: Windows System (các công cụ chuẩn của Windows),
Applications (các ứng dụng của ngời dùng cài thêm), Vietnamese Utilities (các tiện ích về tiếng việt).
Cơ chế hoạt động của chơng trình này là "mồi lửa" cho ngời sử dụng khởi động chơng trình mà mình
cần bằng menu hay các button của chơng trình, sau đó chơng trình này tự động "biến".
Để mồi lửa cho ngời sử dụng, ta buộc phải biết chính xác vị trí của các file chơng trình mà ngời dùng
cần.
Đầu tiên là các tiện ích kèm theo Windows nh WordPad, Notepad, Paint, (tôi chỉ xin thí dụ 3 chơng
trình thôi). Các file thực thi của chơng trình này chủ yếu nằm trong th mục Windows, vậy chỉ cần tìm
ra th mục Windows là ta có thể giải quyết đợc vấn đề.
Chuyện này cũng rất dễ dàng và vô cùng may mắn là Windows có khả năng tự động tìm kiếm các file
thực thi trong th mục Windows và Windows\System cho nên chúng ta khỏe (ta có thể hiểu là nó tự đặt
dờng dẫn đến th mục Windows và Windows\System).
Chú ý: Khi muốn gọi WordPad bạn phải gọi file write.exe và Paint phải gọi file Pbrush.exe. 2 file này
không phải là file chơng trình chính, chúng chỉ có nhiệm vụ gọi file thực thi của Paint (MSPaint.exe)
và WordPad (WordPad.exe) nằm trong Program files\Accessories mới thực sự là file chơng trình chính.
Microsoft phải làm nh vậy để tơng thích với các chơng trình cũ của Windows 3.x. Sau đây là tên file
của một số chơng trình có sẵn trong Windows (với điều kiện bạn phải cho cài đặt khi setup Windows).
Tên file Th mục Chơng trình
notepad.exe Windows Notepad
write.exe Windows WordPad
Pbrush.exe Windows Paint
Cleanmgr.exe Windows Disk Cleanup (W98)
Defrag.exe Windows Disk Defragmenter
Scandskw.exe Windows Scan Disk
Sndvol32.exe Windows Volume Control
Winfile.exe Windows File manager
Msconfig.exe System System Configuration Utility
Sfc.exe System System file checker
Sysedit.exe System System Configuration Editor
Vậy là chuyện gọi 1 chơng trình của Windows không có gì khó khăn, chỉ cần biết tên file là xong, mọi
chuyện còn lại là của Windows.
Còn các ứng dụng khác do ngời dùng hay ngời lắp máy cài đặt thêm chỉ có cách là gọi theo đờng dẫn
chính xác vì mỗi máy mỗi khác, công sức cho việc tìm kiếm khá gian nan, cha hợp với các tay nghiệp
d nh chúng ta. Khuyết điểm của chơng trình là phải viết riêng cho từng máy, chúng ta sẽ giải quyết vấn
đề này ở bài viết sau "Nâng cấp chơng trình Launch".
Bạn cũng có thể viết chơng trình này cho chức năng Auto Run của CD chơng trình, lúc nay mọi chuyện
lại càng dễ dàng vì các đờng dẫn và chơng trình trên CD đều nằm trong tay ta, cứ đi từ th mục gốc vào
là xong chuyện.
Thiết kế giao diện
Khởi động Visual Basic Tôi dùng Visual Basic 5 để minh họa, các bạn có thể dùng các phiên bản khác
(v4 hay v6) cũng không sao. Còn nếu máy cha có phải tiến hành cài đặt, nên chọn các ấn bản
Enterprise để tận dụng sức mạnh của Visual Basic (VB). Kể từ Visual Basic 5 trở đi Microsoft chỉ phát
hành version 32 bit, version 16bit cuối cùng xuất hiện ở Visual Basic 4.
Vào file/ New Project, click chọn Standard EXE, click OK, bạn sẽ thấy ngay một form trống xuất hiện
sẵn sàng để thiết kế.
Bây giờ bạn hãy tạo các control khác trên form, vị trí các control bạn có thể tùy ý bạn hay theo mẫu
minh họa, thiết đặt các thông số về thuộc tính (properties) nh sau:
Control Properties Name Notes
form
> BorderStyle: 1- FixedSingle
> MinButton: True
> Icon: cho 1 file *.ico, *.cur để làm biểu tợng
cho chơng trình.
> Caption: Launch
frmMain form chính của chơng trình.
Mục đích
Command
Button
Caption: Windows cmdWin
Các nút nhấn để khởi động
các ứng dụng tơng ứng trong
nhóm
Command
Button
Caption: Applications cmdApp
Command Caption: VietNamese cmdVN
Button
của việc
gán thuộc
tính
BorderStyl
e: 1-
FixedSingl
e là không
cho ngời
dùng thay
đổi kích th-
ớc cửa sổ
chơng trình
trong khi
chạy.
MinButton:
True, cho
phép ngời
dùng
Minimaize
chơng trình
của mình.
Mặc nhiên
khi chọn
BorderStyl
e: 1-
FixedSingl
e thì 2
thuộc tính
MinButton
&
MaxButton
tự động
gán là
False.
Command
Button
Caption: Exit cmdExit Nút thoát
Label
Caption: Để trống
Alignment: 2- Center
Font: fontsize = 14
lblMsg Khung thông báo
CheckBox
Caption: Unload after 20 sec
Value: 1-Checked
chkUnloa
d
Nếu check thì sao 20 giây
chơng trình tự động thoát.
PictureBox Height: 255; Width: 5295 picOut
PictureBox
Appearance: 0- Flat
BorderStyle: 0- None
BackColor: &H00C0FFC0&
picIns
Bạn nên chọn một màu nào
đó cho BackColor để dễ
nhìn.
Timer (giữ nguyên các thuộc tính) timer1 Phục vụ cho việc tự động
Bạn tự cho
kích thớc
sao cho
picIns nhỏ
hơn picOut
1 chút. Và
picIns phải
nằm lọt
trong
picOut, để
có thể làm
picIns lọt
vào bên
trong bạn
làm nh sau:
Tạo
picOut,
hiệu chỉnh
kích thớc
cho hợp lý
(hình minh
họa), click
chọn
picOut, vẽ
thêm 1
picturebox
bên trong
nữa, điều
chỉnh kích
thớc và đặt
tên là
picIns. Hai
PictureBox
này sẽ làm
thanh hiển
thị thời
gian khi
chơng trình
ở chế độ tự
động thoát.
thoát.
Tạo hệ thống các menu cho chơng trình:
Từ trình đơn Tools chọn Menu Editor hay nhấn tổ hợp phím Ctrl - E cũng có tác dụng tơng tự.
Số lợng menu này chỉ làm ví dụ. Bạn thích đa chơng trình nào vào menu thì tạo ra mục chọn menu tơng
ứng. Trong hộp thoại Menu Editor có các nút với công dụng nh sau:
Sau đây thuộc tính của các menu
Caption Name
&Windows
___ Windows Explorer
___ -
___ Paint
___ WordPad
___ Notepad
mnuWin
mnuWE
mnusp1
mnuPaint
mnuWP
mnuNotepad
&Applications
___ Microsoft Word
___ Microsoft Excel
___ Microsoft Access
___ -
___ Paint Shop Pro
___ -
___ Visual Basic
___ Visual C++
mnuApp
mnuWord
mnuExcel
mnuAccess
mnusp2
mnuPaintPro
mnusp3
mnuVb
mnuVc
&Vietnamese
___ VNI Tan Ky 4
___ VietKey 4.09d
___ -
___ Lac Viet td
___ Just click 'n' see
mnuVN
mnuVNI
mnuVK
mnusp4
mnuLV
mnuClickSee
&Exit mnuExit
Chúng ta thấy có 4 menu có tên lần lợt sp1, sp2, sp3, sp4, thuộc tính Caption của nó chỉ là dấu trừ "-".
Tác dụng của nó là tạo ra các đờng kẻ ngang để phân cách các mục chọn trong menu. Sau khi tạo xong,
bạn có các hệ thống menu nh sau
Giao diện sau khi tạo xong hệ thống menu. Bây giờ bạn có thể chạy thử chơng trình bằng phím F5.
Lúc này bạn đã thiết kế xong phần giao diện của chơng trình, kế tiếp chúng ta sẽ tiến hành viết code
cho chơng trình.
Viết Code cho chơng trình Launch
Viết Code cho menu
Ta chỉ cần viết code cho menu, sau đó dùng các nút lệnh để gọi menu tơng ứng.
Bây giờ chúng ta viết code cho mục Windows Explorer trong menu Windows. Vào Windows chọn
Windows Explorer để viết code cho mục chọn menu này.
Bạn gõ vào đoạn sau:
Private Sub mnuWE_Click() ' dòng này có sẵn
Dim P
P = Shell("explorer", vbNormalFocus)
End Sub ' dòng này có sẵn
Giải thích:
* Dim P
Khai báo 1 biến kiểu variant để chứa trị trả về của hàm Shell. Đây là kiểu dữ liệu bao trùm tất cả các
kiểu dữ liệu trong Visual Basic.
* P=Shell("explorer",vbNormalFocus)
Hàm Shell dùng để gọi một chơng trình khác thi hành
Cú pháp Shell(pathname[,windowstyle])
pathname: là đờng dẫn và file thực thi của chơng trình cần gọi. Đây là 1 xâu cho nên khi viết bạn phải
đặt chúng trong cặp dấu " " mới đúng.
windowstyle: là hằng số qui định phong cách khi khởi động của chơng trình cần chạy. Thí dụ: sau khi
gọi chơng trình bạn cần Maximize, Minimize chơng trình đó các hằng có giá trị và ý nghĩa nh sau:
Tên hằng Giá trị ý nghĩa
VbHide 0 Window is hidden and focus is passed to the hidden window.
VbNormalFocus 1 Window has focus and is restored to its original size and position.
VbMinimizedFocus 2 Window is displayed as an icon with focus.
VbMaximizedFocus 3 Window is maximized with focus.
VbNormalNoFocus 4
Window is restored to its most recent size and position. The
currently active window remains active.
VbMinimizedNoFoc
us
5
Window is displayed as an icon. The currently active window
remains active.
Vậy có thể viết lại hàm Shell nh sau Shell("explorer",1) cho gọn
Lu ý: Trong phần pathname của hàm shell lý ra phải ghi đầy đủ đờng dẫn, thí dụ
"C:\Windows\Explorer.exe" (giả sử th mục windows là c:\windows) thay vì "explorer.exe". Sở dĩ ta có
thể ghi gọn nh vậy là vì Windows tự động đặt dờng dẫn path đến các th mục nh: Windows;
Windows\system. Do đó chỉ cần ghi explorer.exe cho tổng quát (khỏi sợ sai đờng dẫn khi đem chạy
trên máy khác).
Bây giờ nhấn F5 để chạy chơng trình, vào menu Windows chọn Windows Explorer, lập tức chơng trình
Windows Explorer đợc khởi động.
Tơng tự nh vậy bạn có viết code cho tất cả các menu con còn lại của menu Windows.
Notepad.exe (Windows/Notepad)
Write.exe (Windows/WordPad)
Pbrush.exe (Windows/Paint)
Đối với Paint và WordPad ta phải dùng 2 file write.exe & pbrush.exe trong th mục Windows để khởi
động. Thực ra 2 file này chỉ có chức năng gọi WordPad.exe và MSPaint.exe (trong th mục \Program
Files\Accessories\) chứ không phải là file chơng trình chính. Microsoft phải làm vậy để tơng thích với
các chơng trình cũ.
Còn các mục chọn khác bạn cũng viết hàm Shell tơng tự nhng đờng dẫn phải cụ thể và chính xác. Thí dụ để viết code cho
menu "Lac Viet td". Vào VietNamese / Lac Viet td, gõ vào
Private Sub mnuLV_Click()
Dim F
F=Shell("d:\tools\lvtd\lvtd.exe",1)
End Sub
Do file lvtd.exe của máy tôi nằm trong th mục d:\tools\lvtd
Nhấn F5 chạy thử xem có vừa ý hay không ?
Viết code cho các Command Button
Bây giờ ta viết lệnh cho các CommandButton tơng ứng. Yêu cầu là viết code sao cho khi nhấn vào nút
Windows thì menu Windows tơng ứng sẽ hiện ra nh hình minh họa
Vậy phải viết lệnh cho nút
+ Windows (cmdWin) gọi menu Windows (mnuWin)
+ Application (cmdApp) > mnuApp
+ VietNamese (cmdVN) > mnuVN
Double click vào cmdWin (hay Right click chọn View code từ menu popup), gõ vào
Private Sub cmdWin_Click()
popupmenu mnuWin
End Sub
Giải thích:
popupmenu mnuWin hành vi (method) popupmenu dùng để hiển thị menu có tên mnuWin
Xem cú pháp popupmenu
Method Popupmenu
Trong chơng trình ta có thể dùng hành vi (method) popupmenu để gọi một menu hiển thị, menu này
phải đợc tạo trớc (menu editor) và có ít nhất 1 mục chọn con (menu thứ cấp)
Cú pháp:
object.PopupMenu menuname, flags, x, y
Trong đó:
object: tên form mà trình đơn sẽ xuất hiện. Nếu không ghi có nghĩa là dùng form hiện hành.
menuname: tên menu cần hiển thị.
flags: giá trị nguyên qui định vị trí xuất hiện của menupopup.
Tên Hằng Giá Trị ý nghĩa
vbPopupMenuLeftAlign 0 Trị mặc định, cạnh trái của trình đơn sẽ ở vị trí x.
vbPopupMenuCenterAlign 4 Trình đơn sẽ canh giữa so với vị trí x.
vbPopupMenuRightAlign 8 Cạnh phải của trình đơn sẽ ở vị trí x.
x,y
Tọa độ trình đơn sẽ xuất hiện. Nếu không ghi
mặc nhiên trình đơn sẽ xuất hiện ở vị trí mouse
Tơng tự cho 2 nút lệnh còn lại. Khi chạy thử chơng trình bạn click vào nút lệnh nào sẽ xuất hiện menu
tơng ứng. Từ đây ngời dùng có thể chọn lệnh từ menu popup hay menu pulldown (menu kéo xuống)
đều đợc.
Viết lệnh cho nút Exit nh sau:
Private Sub cmdExit_Click()
End
End Sub
Làm cho chơng trình tự động thoát
Đối t ợng Timer
Đối tợng Timer
Là đối tợng dùng để xử lý các sự kiện thời gian trong Visual Basic. Cách hoạt động của đối tợng: cứ
sau một khoảng thời gian do ngời viết chơng trình qui định, timer sẽ tự động phát sinh 1 sự kiện thời
gian.
Vậy nếu chúng ta muốn sau 1 khoảng thời gian chơng trình phải tự động thi hành 1 số lệnh nào đó, ta
chỉ việc sử dụng timer này và viết các lệnh cần timer thực hiện vào sự kiện thời gian đó.
Các thuộc tính (Properties) của timer:
Enable: Có kiểu luận lý (True/False). True cho phép timer hoạt động và False sẽ làm vô hiệu timer.
Interval: Là giá trị nguyên, đơn vị là 1/1000 giây. Đây chính là khoảng thời gian bao nhiêu lâu để timer
thực hiện lệnh. Nếu là 0 tơng đơng với Enable=False.
Trong khi chạy chơng trình timer sẽ không hiển thị nh các đối tợng khác. Chúng ta có thể thiết lập các
2 thuộc tính Enable và Interval trong khi thiết kế hay khi chạy chơng trình.
Nếu đang ở chế động tự động thoát (mục Unload after 20 Sec đợc chọn) sau 20 giây chơng trình sẽ tự
động thoát, không cần chúng ta can thiệp. Để làm đợc việc này ta phải dùng Timer và Picture box
(picIns, picOut) đã tạo từ trớc.
Sau khi chơng trình khởi động hoặc khi check vào checkbox. Mỗi giây độ rộng hiện tại của picIns cộng
với độ rộng của picOut/20 (vì 20 giây), cho đến khi độ rông của picIns = picOut thì dừng chơng trình.
Nếu không check chức năng tự động thoát không hoạt động.
Chúng ta tiến hành viết code cho các đối tợng nh sau
Tình huống Form_Load() sẽ đợc kích hoạt khi chơng trình khởi động, timer hoạt động với trị interval =
1000 (tơng đơng 1 giây), độ rộng picIns ban đầu là 0.
Private Sub Form_Load()
Timer1.Interval = 1000
PicIns.Width = 0
End Sub
Khi ngời dùng Click vào check box. Nếu có chọn sẽ làm cho timer hoạt động tơng tự nh Form_Load(),
nếu không chọn thì cho timer ngừng.
Private Sub chkUnload_Click()
If chkUnload.Value = 1 Then
PicIns.Visible = True
Timer1.Interval = 1000
Else
Timer1.Interval = 0
PicIns.Visible = False
End If
PicIns.Width = 0
End Sub
Kiểm tra xem độ rộng picIns >= picOut hay không. Nếu có, kết thúc chơng trình (End), nếu không tiếp
tục tăng độ rộng picIns theo chu kỳ mỗi giây 1 lần.
Private Sub Timer1_Timer()
If PicIns.Width >= PicOut.Width Then
End
Else
PicIns.Width = PicIns.Width + PicOut.Width / 20
End If
End Sub
Chạy thử chơng trình xem nó có tự động thoát không. Thử click vào check box xem có hoạt động nh
mong muốn cha.
Tô son điểm phấn
Thêm vài lời nhắc nhỡ
Chúng ta còn sót 1 đối tợng là lblMsg (Label box) cha sử dụng đến. Label box này ta dùng để in câu
thông báo hớng dẫn mỗi khi ngời dùng rê Mouse qua các Command Button.
Thí dụ nh: Khi rê mouse trên nút Windows thì câu thông báo sẽ là "Các ứng dụng chuẩn của Windows"
chẳng hạn. Để làm đợc điều này ta hãy khảo sát tình huống MouseMove của đối tợng, cụ thể là của
Command Button và Form. Right click vào nút Windows, chọn View code, chọn tình huống
MouseMove.
Private Sub cmdWin_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
lblMsg.Caption = "Run Windows Utilities (Accessories group)"
End Sub
Hiển thị câu thông báo Run Windows Utilities (Accessories group) trong lblMsg khi mouse di chuyển
trên nút Windows. Một cách tơng tự bạn có thể làm cho các button còn lại.
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
lblMsg.Caption = "Please, select a program to start your work."
End Sub
Hiển thị câu thông báo Please, select a program to start your work. trong lblMsg khi mouse di chuyển
phía trên form
Khi chạy chơng trình, bạn thử rê mouse lên các button sẽ thấy nội dung của lblMsg thay đổi liên tục
(hiển thị các câu thông báo của chính bạn).
Làm sao để form khởi động ở giữa màn hình
. kiểu variant để chứa trị trả về của hàm Shell. Đây là kiểu dữ liệu bao trùm tất cả các
kiểu dữ liệu trong Visual Basic.
* P=Shell("explorer",vbNormalFocus)
Hàm