Wednesday, October 28, 2009

Lập trình với hàm API bằng Visual Basic & Delphi

Bạn có thể thực hiện các chức năng với một cửa sổ như Phóng to, Thu nhỏ, Gửi xuống Taskbar, Di chuyển, Chỉnh kích thước hoặc bật nút Start của Windows hay đặt chế độ Standby, chạy Screen Saver thậm chí tắt màn hình máy tính của mình bằng cách gọi hàm API. Chương trình VB dưới đây mô phỏng những việc này.

Bạn thiết kế giao diện và các đối tượng như hình dưới đây

Caption Name
Standby cmdStandby
Start cmdStart
Minimize cmdMinimize
Maximize cmdMaximize
Move cmdMove
Size cmdSize
Close cmdClose

Copy đoạn code này và dán vào chương trình của bạn

Private Const WM_SYSCOMMAND = &H112
Private Const SC_SCREENSAVE = &HF140&
Private Const SC_MINIMIZE = &HF020&
Private Const SC_MAXIMIZE = &HF030&
Private Const SC_RESTORE = &HF120&
Private Const SC_TASKLIST = &HF130&
Private Const SC_MOVE = &HF010&
Private Const SC_SIZE = &HF000&

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

Dim WDMax As Boolean

Private Sub cmdMinimize_Click()
SendMessage Form1.hwnd, WM_SYSCOMMAND, SC_MINIMIZE, 0
End Sub

Private Sub cmdMaximize_Click()
If WDMax = True Then
SendMessage Form1.hwnd, WM_SYSCOMMAND, SC_RESTORE, 0
WDMax = False
Else
SendMessage Form1.hwnd, WM_SYSCOMMAND, SC_MAXIMIZE, 0
WDMax = True
End If
End Sub


Private Sub CmdClose_Click()
End
End Sub

Private Sub cmdMove_Click()
SendMessage Form1.hwnd, WM_SYSCOMMAND, SC_MOVE, 0
End Sub


Private Sub cmdSize_Click()
SendMessage Form1.hwnd, WM_SYSCOMMAND, SC_SIZE, 0
End Sub

Private Sub cmdStandby_Click()
SendMessage Form1.hwnd, WM_SYSCOMMAND, SC_SCREENSAVE, 20
End Sub

Private Sub CmdStart_Click()
' Start menu
SendMessage Form1.hwnd, WM_SYSCOMMAND, SC_TASKLIST, 0
End Sub

o=========)================ END ===============================>

Với chương trình này bạn có thể làm được nhiều việc khá thú vị, nhưng tiếc là tôi không tìm ra cách để tắt màn hình và gọi trình bảo vệ màn hình (Screen Saver) bằng VB, do đó tôi sử dụng Borland Delphi 6.0 để thực hiện. Dưới đây là đoạn code bằng Delphi có thể tắt màn hình và chạy Screen Saver.

Nếu có thể bạn nên viết chương trình có chức năng đặt biểu tượng vào Systray, sau đó bật một Popup menu để chọn các chức năng như Đóng mở CD-ROM, Tắt màn hình, Chạy Screen Saver.... đó quả là một chương trình có ích.

Delphi

Bạn tự thiết kế giao diện, và trên đó bạn đặt 2 Button với Name là Button1 và Button2, Caption tuỳ ý, sau đó click đúp vào một Button để hiện ra cửa sổ soạn thảo và gõ đoạn lệnh sau vào.

procedure TForm1.Button1Click(Sender: TObject);
begin
SendMessage(application.Handle,WM_syscommand,SC_MonitorPower,1);

{bạn có thấy số 1 ở gần cuối dòng lệnh trên không ? nó có nghĩa là Tắt màn hình, bạn thay bằng số 0 (không) thì sẽ chuyển về chế độ Text }
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
{Tương tự như trên}

{1: Standby}
{0: Screen Save (chỉ có hiệu lực khi bạn đang sử dụng 1 trình Screen Saver)}
SendMessage(application.Handle,WM_syscommand,SC_ScreenSave,0);
end;

Sau khi tắt màn hình bạn chỉ cần bấm một phím bất kỳ là màn hình lại tự bật lên.

No comments:

Post a Comment