Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

problem mit "hooking"

Empfohlene Antworten

Veröffentlicht

hi

bin grad dabei mich einfach mit dem "Window Hooking" zu beschäftigen und bin momentan an einem Punkt an dem ich nicht mehr weiterkomme. Ich versuche WH_CALLWNDPROC zu benutzen aber dabei schmiert mir dann immer mein komplettes windows ab, obwohl ich mich nur "dazwischenklemme"

code:

VB6


TestHandle = SetWindowsHookEx( _
WH_CALLWNDPROC, AddressOf testcallback, _
App.hInstance, 0&)

Public Function testcallback(ByVal nCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

testcallback = CallNextHookEx(TestHandle, nCode, wParam, lParam)

end function
[/php]

kann mir jemand helfen warum dann immer meine explorer.exe abschmiert?

danke :)

Du übergibst als ThreadID die 0, das bedeutet das der Hook auf alle

Threads im System angewendet werden soll

-> Das geht aber nur wenn die Funktion auf die der 2.Parameter zeigt

innerhalb einer DLL liegt, deine Funktion liegt aber in deinem Programm

und kann somit nicht in den fremden Speicherbereich geladen werden...

Wenn du die Meldungen für deinen eigenen Prozess abfangen willst

übergib die aktuelle ThreadID :floet:

Gruß

Diablo999

Und wenn du die Meldungen des gesamten Systems abfangen willst kommst

du nicht um eine DLL herum :D :D

hmm aso ne dll...

schade keyboard und mousehook laufen systemweit ;)

naja mal schauen ob mir das auch für mein programm reicht!

danke!

du scheinst dich ja gut damit auszukennen, ich hab auch noch ein paar andere Hooks ausprobiert (SYSMSGFILTER zum Beispiel) und die haben auch alle net funktioniert. muss das auch über ne dll laufen?

Wenn du den Hook nur für deinen eigenen Thread startest, also mit GetCurrentThreadID

die ThreadID ermitteltst und diese an SetWindowsHookEx übergibst müssten alle Hooks laufen

aber halt nur für deinen Thread...

Gibt aber wie du sagst ein paar Hooks die nur global laufen und die gehen dann halt nicht

z.B. WH_JOURNALPLAYBACK

Bei Systemweiten Hooks ist zwingend eine DLL notwendig, geht aber nicht mit VB, geht nicht

mit ner ActiveX DLL.

Gruß

Diablo999

hmm aber mein Keyboard und Mousehook laufen ohne zusätzliche dll systemweit!

ich benutze dafür WH_KEYBOARD und WH_MOUSE

damit fange ich doch auch systemweit alles ab?!

worum es mir eigentlich geht ist folgendes:

ich habe eine exe datei laufen und ich möchte verhindern das diese durch den Taskmanager beendet werden kann. Hab mich dafür dann ein wenig mit Hooks vertraut gemacht und mir kam die Idee das ich ja einfach den "kill" befehl vom Task Manager abfangen und nicht weitersenden könnte. Dafür könnte ich dich die per SendMessage gesendeten Nachrichten an WH_CALLWNDPROC abfangen oder?

oder wird sowas noch anders übergeben?

ok noch ein problem :(

per KBDLLHOOKSTRUCT wird die Tastatureingabe an mein Programm irgendwie immer 2 mal übergeben...

also wenn ich A drücke bekommt das Prog AA. Ich weiss leider nicht wie ich das umgehen soll... klar ich kann blockieren das 2 mal hintereinander das gleiche kommt, das aber schlecht

kann auch aufs KEYUP warten, nur dann kann man die tasten auch nicht mehr gedrückt halten

was kann ich tun? warum kommen die tasten immer 2 mal an? Wenn ich einen Breakpoint setze dann kommt das nur 1 mal... das heisst es kommt irgendwie ganz schnell nochmal an oder so...

Möglicherweise mangelt es mir an Fantasie...

doch ich kann mir keinen Fall vorstellen, in dem es sinnvoll ist, die Möglichkeit der Beendigung einer Anwendung durch den Taskmanager auszuschliessen.

ja dir mangelt es vielleicht an phantasie *g

stell dir einfach mal eine Firma vor wo jeder Mitarbeiter Admin rechte hat. Nun gibt es selbstgeschriebene Programme die man nicht beenden können soll.

klingt doch so als bräuchte man das nun? ;)

Dann nehm ich mal an, das Programm wird bei Systemstart gestartet und soll dann laufen, solange ein Benutzer angemeldet ist.

Vieleicht wäre es dann günstiger dein Programm als Dienst zu konzipieren.

hmm dienst klingt gut aber ich hab von dienste mit VB keine ahnung!

und als dienst wäre die .exe vom Dienst ja trotzdem noch zu sehen und auch killbar!

nochmal zu meinem Programm:

um mich mich jetzt mit Hooks ein wenig besser vertraut zu machen, hab ich mal systemweit die tastatur abgefangen. Leider wird der .vkcode von KBDLLHOOKSTRUCT nicht immer korrekt übergeben?! Shift sollte eigentlich 16 oder so sein, mein hook fängt aber 161 ab...

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.