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.

L­u ý: 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 l­u 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.

VÒ ®Çu trang

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.

Nh­ng 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.

VÒ ®Çu trang

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 ch­a 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 l­u 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, nh­ng 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.

VÒ ®Çu trang

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