Thu nhỏ kớch thước tập tin exe sau khi dịch chương trỡnh.

Một phần của tài liệu Tài liệu Thiết kế chương trình duyệt file âm thanh bằng Visual Basic pdf (Trang 106 - 114)

- None: Textbox khụng cú thanh cuộn.

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.

Cựng học lập trỡnh VISUAL BASIC

Bai viet su dung Font UNICODE NỘI DUNG NHỮNG CÂU HỎI VỀ VISUAL BASIC Kỳ 10 --- 1. Đúng mở khay đĩa CD- ROM 2. Tựy biến Command Button 3. Mở hộp thoại Browse for Folder

éúng mở khay đĩa CD-Rom

Bạn cú muốn viết một tiện ớch để đúng mở khay ổ đĩa CD-Rom cho riờng mỡnh khụng ? Nến bạn cú ý đú thỡ vài dũng code sau đõy sẽ giỳp bạn toại nguyện.

Lưu ý: Chương trỡnh này chỉ tỏc dụng tới ổ CD đầu tiờn trờn hệ thống của bạn (ổ cú tờn gần với tờn Partition cuối cựng của mỏy).

- Tạo một Project mới.

- Khai bỏo hàm API sau trong Form1.

Option Explicit

Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String,

BACK | FORWARD

ByVal lpstrReturnString As String, ByVal uReturnLength As Long, ByVal hWndCallback As Long) As Long

Tạo thờm hàm vbmciSendString() để nhận thụng điệp đúng/mở khay CDROM. Hàm này trả về một String.

Function vbmciSendString(ByVal Command As String, ByVal hWnd As Long) As String

Dim Buffer As String Dim dwRet As Long Buffer = Space$(100)

dwRet = mciSendString(Command, ByVal Buffer, Len(Buffer),hWnd)

vbmciSendString = Buffer

End Function

Tạo lần lượt 2 Command Button và đặt Caption cho chỳng là: "Open" & "Close". Sau đõy là mó tương ứng cho 2 nỳt lệnh đú.

Private Sub Command1_Click()

Dim Dummy As String

Dummy = vbmciSendString("set cdaudio door open", 0)

End Sub

Private Sub Command2_Click()

Dim Dummy As String

Dummy = vbmciSendString("set cdaudio door closed ", 0)

End Sub

Như vậy Command1 dựng để mở khay CD, cũn Command2 thỡ đúng khay. Hóy save lại & cho chạy thử chương trỡnh xem. Hóy ỏp dụng những thủ thuật của cỏc bài trước thiết kế cho chương trỡnh chạy thường trỳ trong Windows, thể hiện thành 1 Icon ở System Tray để tiện sử dụng.

Nhất định nú sẽ hữu ớch khi bạn làm biếng thũ tay nhấn nỳt Eject hoặc cỏi nỳt quỏi quỷ đú khụng cũn tỏc dụng. Riờng tụi cỏi tiện ớch này cực kỳ tiện, do cỏi thựng mỏy (CPU) tụi đặt dưới gầm bàn, muốn lấy CD ra phải khom người nhấn nỳt, rồi chờ (một hai giõy thụi cũng đủ làm tụi núng ruột). Với tiện ớch chỉ việc click chuột khi nào nghe tiếng khay bung ra .... thật tiện lợi.

Đầu trang

Tựy biến Command Button

Command Button là 1 trong những control thụng dụng nhất trong Windows núi chung & trong VB núi riờng. Một chương trỡnh đơn giản nào hầu nhưng cũng cú đối tượng này.

Tuy vậy nú cũng cú những vướng mắt chứ chẳng phải đơn giản đõu. Sau đõy là vài thắc mắc của một bạn tự học VB. Tụi muốn phổ biến cựng cỏc bạn đang tự học VB khỏc.

Cõu hỏi 1: Tại sao khi tụi thay đổi màu BackColor của Command Button thành một màu khỏc (màu mặc nhiờn của Windows) nhưng nú vẫn trơ như đỏ, chẳng thấy thay đổi theo sự lựa chọn của tụi.

Trả lời: Command Button chỉ thay đổi màu Backcolor khi thuộc

tớnh Style của nú được đặt là 1-Graphical mà thụi. Mặc nhiờn là 0- Standard.

Điều này cũng tương tự như thuộc tớnh Picture, khi bạn gỏn một hỡnh ảnh cũng phải gỏn cho thuộc tớnh Style là 1-Graphical thỡ bức ảnh mới hiện lờn, nếu khụng thỡ chẳng thấy thay đổi gỡ.

Cõu hỏi 2: Làm sao để thay đổi màu TextColor (Màu của dũng Text trờn Command Button - Caption) của Command Button ? Trả lời: Trong chế độ Design của VB khụng cú thuộc tớnh nào cho

phộp ta thay đổi màu TextColor, và khi thi hành chương trỡnh cũng vậy. Núi túm lại trong mụi trường phỏt triển của VB bạn khụng thể nào thay đổi màu TextColor của Command Button được.

Do vậy ta phải tỡm một hướng khỏc. Tụi xin đề nghị 2 cỏch sau đõy:

* Custom Control: Bạn cú thể tự thiết kế, điều này đũi hỏi bạn phải cú khả năng tạo ActiveX (cũng tạo bằng VB). Hay bạn cú thể tỡm những ActiveX được thiết kế sẳn, về bổ sung vào ứng dụng của mỡnh (Internet là nơi chắc chắn bạn phải tỡm đến, nếu khụng cú điều kiện, hóy lục lọi trờn cỏc CD free code bỏn ở cỏc cửa hàng). Nhưng theo tụi biết, trong bộ VB 4 (Version 32bit) cú một custom control tờn là Sheridan 3D Controls (THREED32.OCX) bạn cú thể dễ dàng tỡm tỡm thấy hơn. Bao gồm cỏc đối tượng sau:

• SSCheck • SSFrame • SSPanel

• SSRibon • SSCommand • và SSOption

Bao gồm rất nhiều thuộc tớnh cho phộp ta chọn đủ màu sắc, cú cả thuộc tớnh cho phộp gỏn hiệu ứng cho Text nữa. Thật lý thỳ. Xem thử giao diện

* Tự vẽ lấy Command Button: Cỏch này thỡ ai cũng cú thể làm, nhưng đẹp hay xấu là do phụ thuộc vào khả năng vẽ của bạn. Cỏch làm như sau:

• Tự bạn vẽ một nỳt lệnh, hỡnh dỏng kớch thước màu sắc tựy ý bạn. Bằng cỏc chương trỡnh đồ họa (hay dựng ngay Paint của Windows cũng được).

• Lưu lại bức ảnh dưới dạng Bitmap (*.bmp). Thật ra với VB6 bạn cú thể dựng format: bmp, jpg, gif ... Cũn VB4 chỉ dựng bmp mà thụi.

• Gỏn vào thuộc tớnh Picture của command button. Lưu ý: Bạn phải đặt cho thuộc tớnh Style là 1-Graphical & Caption là trống (khụng đặt gỡ cả).

Tụi cú làm một thớ dụ đơn giản để minh họa

Bức ảnh gif được vẽ bằng cỏc chương trỡnh vẽ thụng dụng.

Button thứ nhất là do tụi vẽ, button thứ hai là của VB (khụng thể thay đổi màu cho Text được). Bạn hóy so sỏnh.

Cú người cho rằng bạn cú thể đặt một Picture vào Image control để giả làm button, nhưng theo riờng tụi cỏch này khụng hay, vỡ khi đặt hỡnh ảnh trong Image lỳc người dựng Click chuột sẽ khụng cảm thấy bị lỳn xuống như là cỏch đặt hỡnh ảnh vào Command Button của tụi mới trỡnh bày.

Đầu trang

Trong lỳc viết ứng dụng, cú lỳc bạn chỉ cần cho người dựng chọn thư mục (nếu chọn tập tin thỡ đó cú Dialog Open rồi). Lỳc này bạn nờn cho hiển thị hộp thoại "Browse for Folder" là tiện nhất. Sau đõy là cỏch thực hiện:

Hóy khởi động VB. Tạo Project mới Gừ đoạn Code sau đõy vào một Module.

Private Type BrowseInfo

hwndOwner As Long pIDLRoot As Long pszDisplayName As Long lpszTitle As Long ulFlags As Long lpfnCallback As Long lParam As Long iImage As Long End Type

Private Const BIF_RETURNONLYFSDIRS = 1 Private Const MAX_PATH = 260

Private Declare Sub CoTaskMemFree Lib "ole32.dll" (ByVal hMem As Long)

Private Declare Function lstrcat Lib "kernel32" Alias "lstrcatA" (ByVal lpString1 As String, ByVal lpString2 As String) As Long

Private Declare Function SHBrowseForFolder Lib "shell32" (lpbi As BrowseInfo) As Long

Private Declare Function SHGetPathFromIDList Lib

"shell32" (ByVal pidList As Long, ByVal lpBuffer As String) As Long

Public Function BrowseForFolder(hwndOwner As Long, sPrompt As String) As String

Dim iNull As Integer Dim lpIDList As Long Dim lResult As Long Dim sPath As String Dim udtBI As BrowseInfo With udtBI .hwndOwner = hwndOwner .lpszTitle = lstrcat(sPrompt, "") .ulFlags = BIF_RETURNONLYFSDIRS End With lpIDList = SHBrowseForFolder(udtBI) If lpIDList Then sPath = String$(MAX_PATH, 0)

lResult = SHGetPathFromIDList(lpIDList, sPath) Call CoTaskMemFree(lpIDList)

iNull = InStr(sPath, vbNullChar)

If iNull Then sPath = Left$(sPath, iNull - 1) End If

BrowseForFolder = sPath

Trờn Form tạo một Command Button (Name: Command1), gừ đoạn code sau vào sự kiện Click.

Private Sub Command1_Click()

Dim strResFolder As String

strResFolder = BrowseForFolder(hWnd, "Select Folder.") If strResFolder <> "" Then

MsgBox strResFolder End If

End Sub

Kết quả chọn của người dựng được đặt vào biến strResFolder. Bạn hóy ỏp dụng vào ứng dụng của mỡnh khi cú nhu cầu.

Chỳc bạn thành cụng.

Những cõu hỏi về VB 1. Kiểm tra sự tồn tại của tập tin

Đặt dũng code này vào tập tin .BAS (module) và cú thể gọi nú từ bất kỳ đõu trong chương trỡnh của bạn.

Function FileExists(Byval FileName As String)

Dim Exist As Integer

On Local Error Resume Next Exists = Len(Dir(FileName$)) On Local Error Goto 0

If Exists = 0 Then FileExists = False Else FileExists = True End If End Function

Hàm này sẽ nhận tham số là một String (chớnh là đường dẫn đến file cần kiểm tra sự tồn tại). Trả về một trị kiểu Boolean (TRUE/FALSE), phản ảnh kết quả kiểm tra của hàm.

Một phần của tài liệu Tài liệu Thiết kế chương trình duyệt file âm thanh bằng Visual Basic pdf (Trang 106 - 114)