10. Làm sao để play các file: MID, WAV ?
Nếu bạn sử dụng Visual Basic 5.0 trở lên thì có thuộc tính Locked, nếu gán là True thì người dùng không thể thay đổi nội dung của TextBox (Read Only).
Có một số ý kiến cho rằng, bạn cần chộp lấy sự kiện KeyPress và KeyDown làm cho chúng thành zero. Tuy nhiên, giải pháp tốt nhất vẫn là hàm Windows API SendMessage.
Global Const WM_USER = &H400
Global Const EM_SETREADONLY = (WM_USER + 31)
Declare Function SendMessage Lib "User" (ByVal hWnd As Integer ByVal wMsg As Integer, ByVal wParam As Integer, lParam As Any) As Long
SendMessage(Text1.hWnd, EM_SETREADONLY, 1, 0)
Cách trên người sử dụng vẫn có thể Copy nội dung. Nếu cần bạn thực sự cần cấm người dùng Copy nội dung, bạn có thể loại bỏ tổ hợp phím Ctrl-C bằng cách "đón đánh" khi xảy ra sự kiện KeyPress.
9. Mở file với chương trình liên kết (associated program)
1. Kiểm tra việc nhập liệu vào TextBox
2. Chuyển đổi ký tự trong các đối tượng có khả năng hiệu chỉnh (Editbox) thành chữ hoa 3. Bỏ qua một số ký tự khi gõ văn bản trong TextBox
4. Xóa các mục chọn (Item) trong Combo/List Box 5. Làm sao để tắt tính năng Wordwrap của Rich TextBox 6. Thêm một dòng mới vào cuối TextBox đang chứa văn bản 7. Làm sao để Shut down hay Reboot lại Windows ?
8. Làm cho TEXTBOX trở thành read only hoặc cấm người dùng thay đổi nội dung
9. Mở file với chương trình liên kết (associated program)
10. Làm sao để play các file: MID, WAV ?
Hàm Shell() hơi bị bất tiện vì chỉ gọi được chương trình trực tiếp từ file exe. Không giống như Windows, thí dụ như khi double click lên file DOC sẽ mở Microsoft Word, file TXT sẽ mở Notepad. Bạn cũng có thể viết một Module tạo các mối liên kết như vậy trong Visual Basic để dễ dàng trong việc gọi các ứng dụng. Các khai báo API
#IF WIN32 THEN
Private Declare Function ShellExecute Lib "shell32.dll" Alias _ "ShellExecuteA" ByVal hwnd As Long, ByVal lpOperation As String, _
ByVal lpFile As String, ByVal lpParameters As String, _
ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Private Declare Function GetDesktopWindow Lib "user32" () As Long
#ELSE
Declare Function ShellExecute Lib "SHELL" (ByVal hwnd%, _ ByVal lpszOp$, ByVal lpszFile$, ByVal lpszParams$, _ ByVal lpszDir$, ByVal fsShowCmd%) As Integer
Declare Function GetDesktopWindow Lib "USER" () As Integer #END IF
Private Const SW_SHOWNORMAL = 1
Hàm phục vụ việc khởi động
Function StartDoc(DocName As String) As Long
Dim Scr_hDC As Long
Scr_hDC = GetDesktopWindow()
StartDoc = ShellExecute(Scr_hDC, "Open", _ DocName, "", "C:\", SW_SHOWNORMAL)
End Function
Kiểm chứng chương trình
Private Sub Form_Click()
Dim r As Long
r = StartDoc("c:\mydoc\myletter.doc") Debug.Print "Return code from Startdoc: "; r
End Sub