Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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 :)

Geschrieben

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

Geschrieben

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?

Geschrieben

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

Geschrieben

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?

Geschrieben

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...

Geschrieben

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.

Geschrieben

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? ;)

Geschrieben

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.

Geschrieben

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...

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...