Hướng dẫn sử dụng 1 số hàm API trong VB.NET
Trang 1 trong tổng số 1 trang
Hướng dẫn sử dụng 1 số hàm API trong VB.NET
Trước kia mình có ứng dụng 1 vài hàm API dùng để viết mấy tool nhỏ nhỏ phục vụ cho việc auto.
Giờ mình xin hướng dẫn sơ qua cho bạn nào chưa biết:
Một số hàm mình sử dụng đến:
- FindWindow(ByVal lpClassName As String, ByVal lpWindowName As String) : Hàm này dùng để tìm ra handle chính của tiến trình (có thể hiểu nôm na là cửa sổ giao diện của tiến trình cần gửi)
+ Biến lpClassName: là tên class của tiến trình cần gửi thông điệp.
+ Biến lpWindowName: là tên cửa sổ của tiến trình (Caption - Tiêu đề)
(Để biết được lpClassName và lpWindowName bạn dùng thêm 1 tool có tên là Spy++ cái này có sẵn khi bạn cài VS.NET)
Trong hình mình lấy handle chính của Notepad: Class là Notepad, Caption là Untitled - Notepad
- FindWindowEx(ByVal parentHandle As IntPtr, ByVal childAfter As IntPtr, ByVal lpszClass As String, ByVal lpszWindow As String) : Hàm này dùng để tìm ra handle con, địa chỉ của các controls để gửi thông điệp trực tiếp vào nó.
- (ByVal hWnd As IntPtr, ByVal Msg As Integer, ByVal wParam As Integer, ByVal lParam As String): Gửi thông điệp có chờ. Với hWnd là handle của cửa sổ sẽ nhận thông điệp, Msg là thông điệp, wParam và lParam: Đây là những thông tin cần thiết cho Filter Function trong quá trình xử lý sự kiện. Các giá trị này sẽ có ý nghĩa khác nhau tuỳ thuộc vào loại thông điệp muốn gửi.
- PostMessage(ByVal hWnd As IntPtr, ByVal Msg As Integer, ByVal wParam As Integer, ByVal lParam As Integer): Gửi thông điệp không có chờ (2 hàm này thày có giảng khá cụ thể trên lớp rồi nên mình sẽ không giải thích thêm)
Ok, giờ chúng ta mở VS.NET lên tạo 1 project mới và thiết kế giao diện như sau:
Chương trình này sẽ thay đổi nội dung, tiêu đề, hiển thị và đóng cửa sổ Notepad.
Trươc hết khai báo 1 số hàm API sẽ dùng tới:
Đây là link down chương trình Demo mình vừa viết các bạn download về tham khảo thêm:
http://www.mediafire.com/?pne1r6a3o3cddgg
VS 2008 nha các bạn
Thực sự 1 số tham số mình không biết mô tả sao cả, nói đúng hơn là mình cũng chưa hiểu hết, mong thày và các bạn đóng góp ý kiến.
Giờ mình xin hướng dẫn sơ qua cho bạn nào chưa biết:
Một số hàm mình sử dụng đến:
- FindWindow(ByVal lpClassName As String, ByVal lpWindowName As String) : Hàm này dùng để tìm ra handle chính của tiến trình (có thể hiểu nôm na là cửa sổ giao diện của tiến trình cần gửi)
+ Biến lpClassName: là tên class của tiến trình cần gửi thông điệp.
+ Biến lpWindowName: là tên cửa sổ của tiến trình (Caption - Tiêu đề)
(Để biết được lpClassName và lpWindowName bạn dùng thêm 1 tool có tên là Spy++ cái này có sẵn khi bạn cài VS.NET)
Trong hình mình lấy handle chính của Notepad: Class là Notepad, Caption là Untitled - Notepad
- FindWindowEx(ByVal parentHandle As IntPtr, ByVal childAfter As IntPtr, ByVal lpszClass As String, ByVal lpszWindow As String) : Hàm này dùng để tìm ra handle con, địa chỉ của các controls để gửi thông điệp trực tiếp vào nó.
- (ByVal hWnd As IntPtr, ByVal Msg As Integer, ByVal wParam As Integer, ByVal lParam As String): Gửi thông điệp có chờ. Với hWnd là handle của cửa sổ sẽ nhận thông điệp, Msg là thông điệp, wParam và lParam: Đây là những thông tin cần thiết cho Filter Function trong quá trình xử lý sự kiện. Các giá trị này sẽ có ý nghĩa khác nhau tuỳ thuộc vào loại thông điệp muốn gửi.
- PostMessage(ByVal hWnd As IntPtr, ByVal Msg As Integer, ByVal wParam As Integer, ByVal lParam As Integer): Gửi thông điệp không có chờ (2 hàm này thày có giảng khá cụ thể trên lớp rồi nên mình sẽ không giải thích thêm)
Ok, giờ chúng ta mở VS.NET lên tạo 1 project mới và thiết kế giao diện như sau:
Chương trình này sẽ thay đổi nội dung, tiêu đề, hiển thị và đóng cửa sổ Notepad.
Trươc hết khai báo 1 số hàm API sẽ dùng tới:
- Code:
<DllImport("user32.dll", SetLastError:=True)> _
Public Shared Function FindWindow(ByVal lpClassName As String, ByVal lpWindowName As String) As IntPtr
End Function
<DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
Private Shared Function FindWindowEx(ByVal parentHandle As IntPtr, ByVal childAfter As IntPtr, ByVal lpszClass As String, ByVal lpszWindow As String) As IntPtr
End Function
<DllImport("user32.dll", SetLastError:=True)> _
Public Shared Function PostMessage(ByVal hWnd As IntPtr, ByVal Msg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Boolean
End Function
<DllImport("user32.dll", CharSet:=CharSet.Auto)> _
Public Shared Function SendMessage(ByVal hWnd As IntPtr, ByVal Msg As Integer, ByVal wParam As Integer, ByVal lParam As String) As Boolean
End Function
<DllImport("user32.dll")> _
Public Shared Function SetWindowText(ByVal hWnd As IntPtr, ByVal [text] As String) As Integer
End Function
<DllImport("user32.dll")> _
Public Shared Function ShowWindow(ByVal hWnd As IntPtr, ByVal nCmdShow As Integer) As Boolean
End Function
- Code:
Const WM_CLOSE = &H10 'Chính là tham số wParam - thực hiện công việc đóng cửa sổ
Const WM_SETTEXT = &HC ' thực hiện công việc gán nội dung, ngoài ra còn 1 số hàm như WM_CHAR để gán ký tự, WM_GETTEXTLENGTH lấy độ dài chuỗi, WM_KDOWN bắt sự kiện nhấn phím... và rất rất nhiều tham số khác (các bạn có thể tham khảo tại đây http://www.piclist.com/techref/os/win/api/messIndex-local.html)
Dim hNotepad As Long 'Biến lưu handle cửa sổ chính
Dim hEdit As Long 'Biến lưu handle phần nhập liệu (Edit)
- Code:
Private Sub FindHandle()
hNotepad = New Long
hEdit = New Long
hNotepad = FindWindow("Notepad", Nothing)
hEdit = FindWindowEx(hNotepad, hEdit, "Edit", Nothing)
End Sub
- Code:
Private Sub cmdSend_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdSend.Click
FindHandle()
If hEdit <> 0 Then
SendMessage(hEdit, WM_SETTEXT, Nothing, txtMsg.Text)
Else
MsgBox("Cửa sổ Notepad chưa được mở.")
End If
End Sub
Đây là link down chương trình Demo mình vừa viết các bạn download về tham khảo thêm:
http://www.mediafire.com/?pne1r6a3o3cddgg
VS 2008 nha các bạn
Thực sự 1 số tham số mình không biết mô tả sao cả, nói đúng hơn là mình cũng chưa hiểu hết, mong thày và các bạn đóng góp ý kiến.
NguyenVanThang25 (I12A)- Tổng số bài gửi : 29
Join date : 15/02/2012
Age : 37
Similar topics
» Thảo luận Bài 4
» Thảo luận Bài 4
» Hướng dẫn sử dụng lệnh find trong Linux
» Hướng dẫn tạo và sử dụng System Repair Disc trong Windows 7
» Thuc hanh da xong, gio den ly thuyet ^^
» Thảo luận Bài 4
» Hướng dẫn sử dụng lệnh find trong Linux
» Hướng dẫn tạo và sử dụng System Repair Disc trong Windows 7
» Thuc hanh da xong, gio den ly thuyet ^^
Trang 1 trong tổng số 1 trang
Permissions in this forum:
Bạn không có quyền trả lời bài viết