Visual Basic

Mở một ứng dụng Control Panel

27/12/2013 21:46

Khi viết ứng dụng Visual Basic, để mở một ứng dụng Windows khác, ta có thể sử dụng hàm Shell. Nhưng cách này không áp dụng cho các ứng dụng thuộc Control Panel được. Phải chế biến lại...

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

Ý kiến bạn đọc (0)
Tên   Email

Lên đầu trang