387 Stimmen

Was versteht man unter dem Begriff "Hook" in der Programmierung?

Vor kurzem hörte ich den Begriff "Hook", als ich mit einigen Leuten über ein Programm sprach, das ich gerade schrieb. Ich bin mir nicht sicher, was dieser Begriff genau bedeutet, obwohl ich aus dem Gespräch schloss, dass ein Hook eine Art Funktion ist. Ich habe nach einer Definition gesucht, konnte aber keine gute Antwort finden. Könnte mir jemand eine Vorstellung davon geben, was dieser Begriff im Allgemeinen bedeutet, und vielleicht ein kleines Beispiel zur Veranschaulichung der Definition nennen?

21voto

geowa4 Punkte 38662

Hooking ist in der Programmierung eine Technik, bei der sogenannte Hooks verwendet werden, um eine Kette von Prozeduren als Ereignisbehandler zu erstellen.

6voto

urgent Punkte 51

Hook bezeichnet eine Stelle im Code, an der Sie ein Ereignis eines bestimmten Typs versenden. Wenn dieses Ereignis zuvor mit einer entsprechenden Funktion registriert wurde, die zurückgerufen werden kann, wird es von dieser registrierten Funktion behandelt, andernfalls geschieht nichts.

3voto

dusoft Punkte 10986

Hooks können ausgeführt werden, wenn eine Bedingung eintritt, z. B. wenn sich eine Variable ändert, eine Aktion aufgerufen wird oder ein Ereignis eintritt. Hooks können in den Prozess eingreifen und Dinge ändern oder auf Änderungen reagieren.

2voto

Toji Punkte 32827

Oftmals bezieht sich das Hooking auf Win32-Nachrichten-Hooking oder die Linux/OSX-Äquivalente, aber allgemeiner ausgedrückt ist Hooking einfach die Benachrichtigung eines anderen Objekts/Fensters/Programms/etc, dass Sie benachrichtigt werden wollen, wenn eine bestimmte Aktion stattfindet. Zum Beispiel: Alle Fenster auf dem System benachrichtigen Sie, wenn sie geschlossen werden sollen.

Im Allgemeinen ist das Hooking etwas gefährlich, da es zu Instabilität oder zumindest zu unerwartetem Verhalten führen kann, wenn man nicht versteht, wie es das System beeinflusst. Unter bestimmten Umständen kann es aber auch SEHR nützlich sein. Zum Beispiel: FRAPS verwendet es, um zu bestimmen, in welchem Fenster es den FPS-Zähler anzeigen soll.

2voto

Joe Soul-bringer Punkte 3214

Eine Hakenkette ist eine Reihe von Funktionen, in der jede Funktion die nächste aufruft. Das Besondere an einer Kette von Hooks ist, dass der Programmierer zur Laufzeit eine weitere Funktion zur Kette hinzufügen kann. Eine Möglichkeit, dies zu tun, besteht darin, nach einem bekannten Ort zu suchen, an dem die Adresse der ersten Funktion in einer Kette gespeichert ist. Sie speichern dann den Wert dieses Funktionszeigers und überschreiben den Wert an der Anfangsadresse mit der Adresse der Funktion, die Sie in die Hook-Kette einfügen möchten. Die Funktion wird dann aufgerufen, erledigt ihre Aufgabe und ruft die nächste Funktion in der Kette auf (sofern Sie nicht anders entscheiden). Natürlich gibt es noch eine Reihe anderer Möglichkeiten, eine Kette von Hooks zu erstellen, vom direkten Schreiben in den Speicher bis hin zur Verwendung der Metaprogrammiermöglichkeiten von Sprachen wie Ruby oder Python.

Ein Beispiel für eine Kette von Hooks ist die Art und Weise, wie eine MS-Windows-Anwendung Nachrichten verarbeitet. Jede Funktion in der Verarbeitungskette verarbeitet entweder eine Nachricht oder sendet sie an die nächste Funktion in der Kette.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X