Tips SistemThis article applies to a different operating system than the one you are using. Article content that may not be relevant to you is disabled.
Untuk Microsoft Visual C# versi dari artikel ini, lihat 318804
(http://support.microsoft.com/kb/318804/
)
.
Artikel ini menjelaskan cara menetapkan kail yang khusus untuk benang dan kait prosedur. Artikel ini menggunakan kait mouse sebagai contoh.
Anda dapat menggunakan kait untuk memantau peristiwa jenis tertentu. Anda dapat mengaitkan kejadian ini dengan benang tertentu atau dengan semua thread yang ada di desktop sama sebagai benang panggilan.
Untuk mengatur hook, panggilan SetWindowsHookEx fungsi dari User32.dll file. Fungsi ini menginstal aplikasi kait prosedur dalam rantai kait yang berhubungan dengan kait.
Untuk mengatur mouse hook dan untuk memantau peristiwa mouse, ikuti langkah berikut:
Mulai Microsoft Visual Studio.NET.
Pada Berkas menu, titik Baru, lalu klik Project.
Dalam Proyek baru kotak dialog, klik Proyek-proyek Visual Basic di bawah Jenis proyek. Kemudian, klik Aplikasi Windows di bawah Pola acu.
Dalam Nama kotak, jenis ThreadSpecificMouseHook. Secara default, suatu bentuk yang dinamakan Form1 dibuat.
Pada awal Form1.vb file, paste kode berikut.
Imports System.Runtime.InteropServices
Public Delegate Function CallBack( _
ByVal nCode As Integer, _
ByVal wParam As IntPtr, _
ByVal lParam As IntPtr) As Integer
Dalam Form1 kelas, paste kode berikut.
'Declare the mouse hook constant.
'For other hook types, obtain these values from Winuser.h in Microsoft SDK.
Dim WH_MOUSE As Integer = 7
Shared hHook As Integer = 0
'Keep the reference so that the delegate is not garbage collected.
Private hookproc As CallBack
'Import for the SetWindowsHookEx function.
<DllImport("User32.dll", CharSet:=CharSet.Auto, CallingConvention:=CallingConvention.StdCall)> _
Public Overloads Shared Function SetWindowsHookEx _
(ByVal idHook As Integer, ByVal HookProc As CallBack, _
ByVal hInstance As IntPtr, ByVal wParam As Integer) As Integer
End Function
'Import for the CallNextHookEx function.
<DllImport("User32.dll", CharSet:=CharSet.Auto, CallingConvention:=CallingConvention.StdCall)> _
Public Overloads Shared Function CallNextHookEx _
(ByVal idHook As Integer, ByVal nCode As Integer, _
ByVal wParam As IntPtr, ByVal lParam As IntPtr) As Integer
End Function
'Import for the UnhookWindowsHookEx function.
<DllImport("User32.dll", CharSet:=CharSet.Auto, CallingConvention:=CallingConvention.StdCall)> _
Public Overloads Shared Function UnhookWindowsHookEx _
(ByVal idHook As Integer) As Boolean
End Function
'Point structure declaration.
<StructLayout(LayoutKind.Sequential)> Public Structure Point
Public x As Integer
Public y As Integer
End Structure
'MouseHookStruct structure declaration.
<StructLayout(LayoutKind.Sequential)> Public Structure MouseHookStruct
Public pt As Point
Public hwnd As Integer
Public wHitTestCode As Integer
Public dwExtraInfo As Integer
End Structure
Tambahkan tombol untuk formulir. Kemudian, paste kode berikut di button1_click prosedur.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If hHook.Equals(0) Then
hookproc = AddressOf MouseHookProc
hHook = SetWindowsHookEx(WH_MOUSE, _
hookproc, _
IntPtr.Zero, _
AppDomain.CurrentDomain.GetCurrentThreadId())
If hHook.Equals(0) Then
MsgBox("SetWindowsHookEx Failed")
Return
Else
Button1.Text = "UnHook Windows Hook"
End If
Else
Dim ret As Boolean = UnhookWindowsHookEx(hHook)
If ret.Equals(False) Then
MsgBox("UnhookWindowsHookEx Failed")
Return
Else
hHook = 0
Button1.Text = "Set Windows Hook"
Me.Text = "Mouse Hook"
End If
End If
End Sub
Dalam Form1 kelas, paste kode berikut untuk MouseHookProc fungsi.
Public Shared Function MouseHookProc( _
ByVal nCode As Integer, _
ByVal wParam As IntPtr, _
ByVal lParam As IntPtr) As Integer
Dim MyMouseHookStruct As New MouseHookStruct()
Dim ret As Integer
If (nCode < 0) Then
Return CallNextHookEx(hHook, nCode, wParam, lParam)
End If
MyMouseHookStruct = CType(Marshal.PtrToStructure(lParam, MyMouseHookStruct.GetType()), MouseHookStruct)
Dim tempForm As Form
tempForm = Form.ActiveForm()
Dim strCaption As String
strCaption = "x = " & MyMouseHookStruct.pt.x & " y = " & MyMouseHookStruct.pt.y
tempForm.Text = strCaption
Return CallNextHookEx(hHook, nCode, wParam, lParam)
End Function
Tekan F5 untuk menjalankan projek. Klik tombol pada formulir untuk mengatur pengait. Koordinat pointer muncul pada bilah keterangan bentuk ketika pointer yang bergerak pada formulir.
Anda tidak dapat menerapkan global kait di.NET Framework. Tingkat rendah kait berjalan dalam proses penelepon. Ini kait tidak memerlukan kode disuntikkan ke dalam proses lainnya. Mereka dapat diimplementasikan dalam kode berhasil, tetapi mereka mungkin tidak terus bekerja. Karena setiap event masukan harus menunggu untuk hook tingkat rendah kembali sebelum hook dikirim, kait lambat dapat secara signifikan mengganggu responsif dari sistem. Windows diam-diam menghapus setiap kail yang memakan waktu terlalu lama untuk memproses. Karena kode dikelola tidak dapat mengendalikan saat apa sampah kolektor berjalan, ada tidak ada jaminan bahwa prosedur kait akan selalu kembali cukup cepat untuk menghindari menjadi dihapus.
PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.
Klik disini untuk melihat versi Inggris dari artikel ini:319524
(http://support.microsoft.com/kb/319524/en-us/
)
Mondja el, hogy miért, és tudassa velünk, miként tudnánk javítani az információ min?ségén
Köszönjük! Ez az információ segítséget nyújt számunkra, hogy fejlesszük a támogatási tartalmat. További támogatási lehet?ségekért keresse fel a következ? webhelyet: Súgó és támogatási webhely.