Αυτήν τη στιγμή είστε εκτός σύνδεσης, σε αναμονή για επανασύνδεση στο Internet
Είσοδος

Το πρόγραμμα περιήγησής σας δεν υποστηρίζεται

Πρέπει να ενημερώσετε το πρόγραμμα περιήγησης για να χρησιμοποιήσετε την τοποθεσία.

Κάντε ενημέρωση στην πιο πρόσφατη έκδοση του Internet Explorer

Πώς να ορίσετε ένα Κλείσιμο των Windows στο Visual C#.NET

ΣΗΜΑΝΤΙΚΟ: Αυτό το άρθρο είναι προϊόν λογισμικού μηχανικής μετάφρασης της Microsoft και όχι ανθρώπινης μετάφρασης. Η Microsoft σάς προσφέρει άρθρα που είναι προϊόντα ανθρώπινης αλλά και μηχανικής μετάφρασης έτσι ώστε να έχετε πρόσβαση σε όλα τα άρθρα της Γνωσιακής Βάσης μας στη δική σας γλώσσα. Ωστόσο, ένα άρθρο που έχει προκύψει από μηχανική μετάφραση δεν είναι πάντα άριστης ποιότητας. Ενδέχεται να περιέχει λεξιλογικά, συντακτικά ή γραμματικά λάθη, όπως ακριβώς τα λάθη που θα έκανε ένας μη φυσικός ομιλητής επιχειρώντας να μιλήσει τη γλώσσα σας. Η Microsoft δεν φέρει καμία ευθύνη για τυχόν ανακρίβειες, σφάλματα ή ζημίες που προκύψουν λόγω τυχόν παρερμηνειών στη μετάφραση του περιεχομένου ή χρήσης του από τους πελάτες της. Επίσης, η Microsoft πραγματοποιεί συχνά ενημερώσεις στο λογισμικό μηχανικής μετάφρασης.

Η αγγλική έκδοση αυτού του άρθρου είναι η ακόλουθη:318804
Για την Microsoft Visual Basic έκδοση αυτού του άρθρου, ανατρέξτε 319524.
Εισαγωγή
Αυτό το άρθρο περιγράφει τον τρόπο ορισμού ενός άγκιστρο που αφορούν ένα νήμα και μια διαδικασία αγκίστρου χρησιμοποιώντας άγκιστρου ποντικιού ως παράδειγμα. Μπορείτε να χρησιμοποιήσετε τα άγκιστρα για την παρακολούθηση ορισμένων τύπων συμβάντα. Μπορείτε να συσχετίσετε αυτά τα συμβάντα με ένα συγκεκριμένο νήμα ή με όλα τα νήματα της ίδιας επιφάνειας εργασίας ως κλήσης νήμα.
Περισσότερες πληροφορίες

Ορίστε μια άγκιστρου ποντικιού

Για να ορίσετε ένα άγκιστρο, καλέστε το SetWindowsHookEx συνάρτηση από το αρχείο User32.dll. Αυτή η συνάρτηση εγκαθιστά μια διαδικασία αγκίστρου εφαρμογή ορίζεται στην αλυσίδα άγκιστρο που σχετίζεται με το κλείσιμο.

Για να ορίσετε ένα άγκιστρου ποντικιού και να παρακολουθήσετε συμβάντα ποντικιού, ακολουθήστε τα εξής βήματα:
  1. Ξεκινήστε το Microsoft Visual Studio.NET.
  2. Από το Το αρχείο μενού, σημείο Νέα, και στη συνέχεια κάντε κλικ στο κουμπί Έργο.
  3. Με το Νέο έργο στο παράθυρο διαλόγου, κάντε κλικ στο κουμπί Έργα Visual C# στην περιοχή Τύποι έργου, και στη συνέχεια κάντε κλικ στο κουμπί Εφαρμογή των Windows στην περιοχή Πρότυπα. Με το Όνομα πλαίσιο, πληκτρολογήστε ThreadSpecificMouseHook. Από προεπιλογή, δημιουργείται μια φόρμα που ονομάζεται Form1.
  4. Προσθέστε την ακόλουθη γραμμή κώδικα στο αρχείο Form1.cs μετά την άλλη χρήση δηλώσεις.
    using System.Runtime.InteropServices;
  5. Προσθήκη μετά κώδικα του Φόρμα1 (Form1) κλάση.
    public delegate int HookProc(int nCode, IntPtr wParam, IntPtr lParam);//Declare the hook handle as an int.static int hHook = 0;//Declare the mouse hook constant.//For other hook types, you can obtain these values from Winuser.h in the Microsoft SDK.public const int WH_MOUSE = 7;private System.Windows.Forms.Button button1;//Declare MouseHookProcedure as a HookProc type.HookProc MouseHookProcedure;			//Declare the wrapper managed POINT class.[StructLayout(LayoutKind.Sequential)]public class POINT {	public int x;	public int y;}//Declare the wrapper managed MouseHookStruct class.[StructLayout(LayoutKind.Sequential)]public class MouseHookStruct {	public POINT pt;	public int hwnd;	public int wHitTestCode;	public int dwExtraInfo;}//This is the Import for the SetWindowsHookEx function.//Use this function to install a thread-specific hook.[DllImport("user32.dll",CharSet=CharSet.Auto, CallingConvention=CallingConvention.StdCall)]public static extern int SetWindowsHookEx(int idHook, HookProc lpfn, IntPtr hInstance, int threadId);//This is the Import for the UnhookWindowsHookEx function.//Call this function to uninstall the hook.[DllImport("user32.dll",CharSet=CharSet.Auto, CallingConvention=CallingConvention.StdCall)]public static extern bool UnhookWindowsHookEx(int idHook);		//This is the Import for the CallNextHookEx function.//Use this function to pass the hook information to the next hook procedure in chain.[DllImport("user32.dll",CharSet=CharSet.Auto, CallingConvention=CallingConvention.StdCall)]public static extern int CallNextHookEx(int idHook, int nCode, IntPtr wParam, IntPtr lParam);
  6. Προσθέστε ένα Κουμπί Έλεγχος της φόρμας και στη συνέχεια προσθέστε τον παρακάτω κώδικα στο του Button1_click διαδικασία.
    private void button1_Click(object sender, System.EventArgs e){	if(hHook == 0)	{	        // Create an instance of HookProc.		MouseHookProcedure = new HookProc(Form1.MouseHookProc);						hHook = SetWindowsHookEx(WH_MOUSE, 					MouseHookProcedure, 					(IntPtr)0,					AppDomain.GetCurrentThreadId());		//If the SetWindowsHookEx function fails.		if(hHook == 0 )		{			MessageBox.Show("SetWindowsHookEx Failed");			return;		}		button1.Text = "UnHook Windows Hook";	}	else	{		bool ret = UnhookWindowsHookEx(hHook);		//If the UnhookWindowsHookEx function fails.		if(ret == false )		{			MessageBox.Show("UnhookWindowsHookEx Failed");			return;		}		hHook = 0;		button1.Text = "Set Windows Hook";		this.Text = "Mouse Hook";	} }
  7. Προσθέστε τον ακόλουθο κώδικα για το MouseHookProc λειτουργεί με το Φόρμα1 (Form1) κλάση.
    public static int MouseHookProc(int nCode, IntPtr wParam, IntPtr lParam){	//Marshall the data from the callback.	MouseHookStruct MyMouseHookStruct = (MouseHookStruct) Marshal.PtrToStructure(lParam, typeof(MouseHookStruct));	if (nCode < 0)	{		return CallNextHookEx(hHook, nCode, wParam, lParam);	}	else	{		//Create a string variable that shows the current mouse coordinates.		String strCaption = "x = " + 				MyMouseHookStruct.pt.x.ToString("d") + 					"  y = " + 		MyMouseHookStruct.pt.y.ToString("d");		//You must get the active form because it is a static function.		Form tempForm = Form.ActiveForm;        		//Set the caption of the form.		tempForm.Text = strCaption;		return CallNextHookEx(hHook, nCode, wParam, lParam); 	}}
  8. Πατήστε F5 για να εκτελεστεί το έργο. Κάντε κλικ στο κουμπί της φόρμας για να ορίσετε το άγκιστρο. Συντεταγμένες ποντικιού εμφανίζεται στη γραμμή Λεζάντα φόρμας όταν ο δείκτης μετακινείται στη φόρμα. Κάντε κλικ στο κουμπί ξανά για να καταργήσετε το άγκιστρο.

Καθολικό άγκιστρα δεν υποστηρίζονται από το.NET Framework

Εκτός από για το άγκιστρο χαμηλού επιπέδου WH_KEYBOARD_LL και το άγκιστρο χαμηλού επιπέδου WH_MOUSE_LL, δεν εφαρμόζουν καθολικό άγκιστρα στη Microsoft.NET Framework. Για να εγκαταστήσετε ένα καθολικό άγκιστρο, ένα άγκιστρο πρέπει να έχουν ίδια εισαγωγής σε άλλη διεργασία που απαιτεί μια έγκυρη, συνεπή συνάρτηση για κλήση σε μια εγγενή εξαγωγή DLL. Αυτή η συμπεριφορά απαιτεί ένα DLL εξαγωγής. Το.NET Framework δεν υποστηρίζει εξαγωγές DLL. Διαχειριζόμενο κώδικα δεν έχει καμία έννοια σταθερή τιμή για έναν δείκτη συνάρτησης επειδή αυτοί οι δείκτες συνάρτησης είναι διακομιστές μεσολάβησης που δημιουργούνται δυναμικά.

Διαδικασίες χαμηλού επιπέδου άγκιστρο ονομάζονται στο νήμα που εγκατέστησε το άγκιστρο. Άγκιστρα χαμηλού επιπέδου δεν απαιτούν ότι η διαδικασία του αγκίστρου υλοποιούνται σε ένα αρχείο DLL.
Αναφορές
Για περισσότερες πληροφορίες σχετικά με τα άγκιστρα, επισκεφθείτε την ακόλουθη τοποθεσία της Microsoft Developer Network (MSDN) στο Web:

Προειδοποίηση: Αυτό το άρθρο έχει μεταφραστεί με μηχανική μετάφραση

Ιδιότητες

Αναγνωριστικό άρθρου: 318804 - Τελευταία αναθεώρηση: 05/29/2011 15:10:00 - Αναθεώρηση: 4.0

  • Microsoft .NET Framework 2.0
  • Microsoft .NET Framework 1.1
  • Microsoft .NET Framework 1.0
  • Microsoft Visual C# 2005 Express Edition
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
  • kbhowtomaster kbmt KB318804 KbMtel
Σχόλια
y>