Nh÷ng
c©u hái vÒ Visual Basic
Xem bai viet bang font Unicode
(Kú 9: LÊy tham sè truyÒn tõ dßng lÖnh. LÊy c¸c biÓu tîng cöa sæ. Thu nhá ch¬ng tr×nh sau khi dÞch b»ng NeoLite 2.0)
1. LÊy tham sè truyÒn tõ dßng lÖnh
VB cung cÊp cho ta hµm Command() hay Command$(). Hµm nµy tr¶ vÒ mét String mµ b¹n truyÒn vµo tõ dßng lÖnh khi gäi ch¬ng tr×nh.
Lu ý: Hµm Command$() míi thùc sù tr¶ vÒ mét String cßn Command() l¹i tr¶ vÒ mét Variant
VÝ dô: H×nh bªn díi cho thÊy ta khëi ®éng ch¬ng tr×nh MyPad.exe & truyÒn cho nã mét tham sè lµ C:\WINDOWS\WIN.INI

B©y giê chóng ta h·y thö lÊy tham sè ®ã qua mét ch¬ng tr×nh viÕt b»ng VB.
Ta sÏ viÕt mét ch¬ng tr×nh tªn MYPAD, cã mét form, trªn ®ã cã mét TextBox. NÕu khi ch¹y ch¬ng tr×nh ngêi dïng kh«ng truyÒn tham sè th× ®Ó TextBox ®ã trèng (hoÆc chøa mét th«ng b¸o). Cßn ngîc l¹i th× kiÓm tr¶ xem ®ã cã ph¶i lµ ®êng dÉn ®Õn mét tËp tin hay kh«ng (tËp tin v¨n b¶n), nÕu ®óng th× hiÓn thÞ néi dung file ®ã vµo TextBox.
§èi víi TextBox b¹n ph¶i ®Æt thuéc tÝnh Multiline = TRUE. ScrollBars lµ 2-Vertical hay 3-Both
Double Click lªn form ®Ó t¹o code cho sù kiÖn FormLoad nh sau:
Private Sub Form_Load()
Dim sFile As String
Dim nd As String, dong As String
nd = "" : dong = ""
sFile = Command$()
If Dir$(sFile) <> "" And sFile <> "" Then
Open sFile For Input As #1
Do While Not EOF(1)
Line Input #1, dong
nd = nd + dong + vbCrLf
Loop
Close #1
Text1 = nd
Caption = "MyPad - " & sFile
Else
Text1 = "TËp tin: [" & sFile & "] kh«ng t×m thÊy." & vbCrLf & "HoÆc kh«ng cho ®êng dÉn file."
End If
End Sub
§Ó cho Textbox (Text1) lóc nµo còng cã kÝch thíc b»ng víi form, b¹n h·y gâ code sau vµo sù kiÖn FormResize.
Private Sub Form_Resize()
Text1.Left = 0 : Text1.Top = 0
Text1.Width = ScaleWidth : Text1.Height = ScaleHeight
End Sub
B©y giê b¹n h·y cho ch¹y thö ch¬ng tr×nh & truyÒn cho nã mét tham sè ®Ó më file WIN.INI
Click Start / Run & gâ vµo D:\MYPAD\MyPad.exe C:\WINDOWS\WIN.INI (Gi¶ sö ch¬ng tr×nh MyPad cña t«i lu trªn D:\MYPAD), sau ®ã click OK. Ch¬ng tr×nh MyPad cña chóng ta ch¹y & hiÓn thÞ néi dung cña WIN.INI trong Textbox.

NÕu b¹n cho ch¹y MYPAD mµ kh«ng cho tham sè hoÆc cho sai ch¬ng tr×nh sÏ hiÓn thÞ nh sau:

V× ®©y chØ lµ mét ch¬ng tr×nh thÝ dô ®¬n gi¶n minh cho c¸ch nhËn tham sè tõ dßng lÖnh, cho nªn b¹n ph¶i chó ý lµ file (®êng dÉn file) mµ b¹n truyÒn cho nã kh«ng ®îc cã thuéc tÝnh Èn, nÕu kh«ng nã sÏ b¸o lµ kh«ng t×m thÊy.
2. LÊy c¸c biÓu tîng chuÈn cña cöa sæ trong Windows
NÕu b¹n cã nhu cÇu tù viÕt lÊy mét cöa sæ cho m×nh th× ch¾c ch¾n b¹n sÏ cÇn c¸c ký tù sau ®©y.
![]()
Windows dïng font tªn lµ Marlett ®Ó thÓ hiÖn c¸c ký tù nµy. Muèn thÓ hiÖn c¸c ký tù nµy b¹n gâ c¸c ký tù tõ 0 ®Õn 9 & tõ a ®Õn y, sau ®ã chän font lµ Marlett. Tõ ®ã b¹n cã thÓ t×m thÊy biÓu tîng m×nh cÇn.
Ch¬ng tr×nh sau ®©y sÏ thÓ hiÖn c¸c biÓu tîng ®ã:
- B¹n h·y t¹o 1 Project míi
- T¹o mét Textbox (Text1) & mét CommandButton (Command1) ®Æt Caption cho nót nµy lµ "Marlett"
- NhËp ®o¹n Code sau ®©y vµo Form1 råi ch¹y thö
Option Explicit
Private Sub Form_Load()
Text1.FontName= "Tahoma"
Text1.FontSize = 20
Text1.Text = "0123456789" & vbCrLf & _
"abcdefghijkl" & vbCrLf & "mnopqrtusxy"
End Sub
Private Sub Command1_Click()
Text1.FontName = "Marlett"
End Sub
Khi ch¬ng tr×nh ch¹y b¹n sÏ thÊy c¸c ký tù xuÊt hiÖn b×nh thêng víi font Tahoma.

Nhng khi click vµo nót Marlett th× kÕt qu¶ nh h×nh sau ®©y.

RÊt tuyÖt ph¶i kh«ng b¹n, nh vËy nÕu cÇn biÓu tîng nµo b¹n cã thÓ dïng ngay mµ kh«ng ph¶i mÊt c«ng vÏ l¹i.
3. Thu nhá kÝch thíc tËp tin exe sau khi dÞch ch¬ng tr×nh.
Sau khi dÞch ch¬ng tr×nh thµnh file exe nÕu thÊy file nµy h¬i lín, b¹n cã thÓ dïng ch¬ng tr×nh NeoLite ®Ó nÐn nã l¹i cho nhá bít. Ch¬ng tr×nh cã thÓ nÐn c¸c file sau:

NeoLite dïng ®Ó nÐn c¸c ch¬ng tr×nh 32 bit cña Windows (.EXE, .DLL vµ .OCX). Sau khi ®· nÐn ch¬ng tr×nh nµy vÉn ch¹y b×nh thêng nh khi cha nÐn, ngêi dïng khã mµ ph¸t hiÖn ®îc sù thay ®æi do tèc ®é cña ch¬ng tr×nh gÇn nh kh«ng hÒ suy gi·m. ChØ cã 1 sù kh¸c biÖt duy nhÊt lµ file ®· nÐn nhá chØ b»ng 60% lóc ®Çu do ®ã tiÕt kiÖm ®îc mét lîng ®¸ng kÓ kho¶ng trèng cña ch¬ng tr×nh tríc khi ph©n phèi ®Õn ngêi dïng.

- NeoLite cã 2 møc nÐn: nÐn cã kh¶ n¨ng phôc håi & nÐn vÜnh viÔn (kh«ng phôc håi ®îc, tïy chän nµy cho tû lÖ nÐn cao h¬n).
- Kh«ng nh÷ng thu nhá kÝch thíc mµ viÖc nÐn cã thÓ b¶o vÖ cho ch¬ng tr×nh, tr¸nh ®îc viÖc dÞch ngîc (de-compilers, dis-assemblers).
- Kh«ng cã g× ®¶m b¶o file sau khi nÐn cßn ch¹y tèt tr¨m phÇn tr¨m, cho nªn b¹n ph¶i cÈn thËn khi sö dông, ®Æc biÖt lµ ph¶i sao lu tríc khi nÐn.
* C¬ chÕ nÐn cña NeoLite:Khi NeoLite nÐn mét ch¬ng tr×nh nã sÏ ghÐp mét module ®Æc biÖt cña chÝnh m×nh víi module cña file ch¬ng tr×nh ®· ®îc nÐn, module ®Æc biÖt ®ã cña NeoLite ®îc gäi lµ loader program (xem h×nh).
Khi file ch¬ng tr×nh nµy ®îc triÖu gäi, loader program sÏ ch¹y tríc vµ më nÐn module cña ch¬ng tr×nh ®· nÐn trùc tiÕp vµo bé nhí vµ cho thùc thi nh mét ch¬ng tr×nh b×nh thêng.

Mäi sù ta nh×n th× vÉn cø tëng diÔn ra b×nh thêng, nhng thËt ra ®»ng sau hËu trêng ªm ¸i Êy, ch¬ng tr×nh cßn ph¶i tèn chót thêi gian ®Ó tù më nÐn chÝnh nã tríc khi n¹p vµo bé nhí, kho¶ng thêi gian nµy lín hay nhá lµ cßn tïy thuéc vµo kÝch thíc thùc cña file ch¬ng tr×nh & tèc ®é xö lý cña m¸y tÝnh.
Mäi ý kiÕn ®ãng gãp vÒ bµi viÕt xin liªn hÖ Thiªn §¨ng thiendang@tlnet.com.vn. T«i rÊt mong nhËn ®îc sù ñng hé nhiÖt t×nh tõ ngêi ®äc, hÑn gÆp l¹i trong bµi viÕt sau.
02/03/2002
PcLeHoan
1996 - 2002
Mirror :
http://www.pclehoan.com
Mirror :
http://www.lehoanpc.net
Mirror :
http://www.ktlehoan.com