Mở file với chương trình liên kết (associated program)

Một phần của tài liệu Nhập Dẫn (Trang 33 - 34)

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 (adsbygoogle = window.adsbygoogle || []).push({});

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

Một phần của tài liệu Nhập Dẫn (Trang 33 - 34)