Hàm Shell nói trên có cú pháp dạng: Shell(<Tên đường dẫn> [,<Kiểu cửa sổ>])
Trong đó:
<Tên đường dẫn>: là tên của ứng dụng cần mở, bao gồm cả thư mục, ổ đĩa.
<Kiểu cửa sổ>: là kiểu cửa sổ ứng dụng khi nó được mở.
Trị mà hàm này trả về là một số (duy nhất) để định danh ứng dụng đã được khởi động, gọi là task-ID.
Ví dụ: ta có thể cho mở ứng dụng NotePad.EXE như sau:
Dim idNotePad
idNotePad = Shell("NotePad", vbNormalFocus)
Tuy nhiên, với các ứng dụng thuộc nhóm Control Panel, sự việc không đơn giản, vì nếu chỉ dùng Shell như sau:
Dim idControl
idControl = Shell("Control", vbNormalFocus)
thì cửa sổ Control Panel sẽ xuất hiện với tất cả các biểu tượng của các ứng dụng con trong Control Panel. Ở đây, tôi đề cập đến yêu cầu chỉ mở một ứng dụng con mà thôi. Ví dụ: để mở ứng dụng con ”Date and Time”, ta phải xài hàm Shell như sau:
Shell "RunDLL32.EXE Shell32.DLL, Control_RunDLL TimeDate.CPL"
Có rất nhiều ứng dụng con của Control Panel có thể được mở theo kiểu này, cho nên bạn có thể viết một hàm dùng chung như sau:
Public Sub RunCTPLApplet(strTenApplet As String)
Shell "RunDLL32.EXE Shell32.DLL, Control_RunDLL " & strTenApplet
End Sub
Rồi xài nó như vầy:
RunCTPLApplet "TimeDate.CPL" ' Mở TimeDate
RunCTPLApplet "Desk.CPL" ' Mở Display
RunCTPLApplet "AppWiz.CPL" ' Mở Add or Remove programs
RunCTPLApplet "Main.CPL" 'Mở Mouse properties
Ví dụ, ta có thể thiết kế biểu mẫu gồm các nút lệnh sau đây:

Đặt tên lần lượt (theo thứ tự từ trên xuống, từ trái qua) như sau:
cmdTimeDate, cmdDisplay, cmdNotePad, cmdAddRemove, cmdControlPanel, cmdMouse. Rồi gõ đoạn mã sau đây vào cửa sổ mã lệnh trên biểu mẫu:
Public Sub RunCTPLApplet(strTenApplet As String)
Shell "RunDLL32.EXE Shell32.DLL, Control_RunDLL " & strTenApplet
End Sub
Private Sub cmdAddRemove_Click()
RunCTPLApplet "AppWiz.CPL" ' Add or Remove programs
End Sub
Private Sub cmdControlPanel_Click()
Shell "Control", vbNormalFocus
End Sub
Private Sub cmdDisplay_Click()
RunCTPLApplet "Desk.CPL" ' Display
End Sub
Private Sub cmdMouse_Click()
RunCTPLApplet "main.CPL" 'Mouse properties
End Sub
Private Sub cmdNotePad_Click()
Dim RetVal
RetVal = Shell("NotePad", vbNormalFocus)
End Sub
Private Sub cmdTimeDate_Click()
RunCTPLApplet "TimeDate.CPL" ' TimeDate
End Sub
Cho chạy thử ứng dụng và để ý cách sử dụng hàm Shell trong các trường hợp.
Đàm Văn Chương