Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
lokale hooks mit SetWindowsHookEx
gemino
myCSharp.de - Member



Dabei seit:
Beiträge: 7

Themenstarter:

lokale hooks mit SetWindowsHookEx

beantworten | zitieren | melden

hallo,
ich habe eine anwendung nach dem tutorial von Dino Esposito auf MSDN (HIER) erstellt weil ich gerne einen lokalen Hook auf eine fremde anwendung erstellen möchte.
solange ich als vierten parameter von

SetWindowsHookEx(HookType code, HookProc func, IntPtr hInstance, int threadID)
den aufruf

(int)AppDomain.GetCurrentThreadId()
verwende funktioniert alles super. ist ja auch meine eigene anwendung.

wenn ich jetzt aber auf einen anderen thread verweise, und zwar auf die andere anwendung, dann wird kein hook mehr gesetzt. gibts da noch andere parameter die ich einstellen muss? laut dem tutorial von MSDN hätte ich eigentlich gedacht die threadID zu ändern würde ausreichen.

hoffe es kann mir jemand weiterhelfen.
private Nachricht | Beiträge des Benutzers
v1vec
myCSharp.de - Member



Dabei seit:
Beiträge: 52

beantworten | zitieren | melden

Du musst wahrscheinlich die funktion die aufgerufen werden soll in eine dll packen, weil man sie sonst nur aus der eigenen exe aufrufen kann, nicht aber der "gehookten" exe.

siehe auch:
OldNewThing Blog
private Nachricht | Beiträge des Benutzers
gemino
myCSharp.de - Member



Dabei seit:
Beiträge: 7

Themenstarter:

beantworten | zitieren | melden

hm, das führt zumindest mal schon dazu, dass die fremde anwendung abstürzt und anscheinend ein hook gesetzt wird. abstürzen ist zwar nicht so super, aber mal schon besser als gar kein hook.

kann ich eigentlich ohne probleme lokale hooks auf andere anwendungen setzen? oder gibts einen punkt wo ich auf c++ klassen mit unmanaged code ausweichen muss? oder brauch ich den nur für globale hooks?
private Nachricht | Beiträge des Benutzers
v1vec
myCSharp.de - Member



Dabei seit:
Beiträge: 52

beantworten | zitieren | melden

Ich hab leider kaum Erfahrung mit lokalen Hooks, aber vllt hilft es ja wenn du mal beschreibst was du überhaupt hookst.

mfg v1vec
private Nachricht | Beiträge des Benutzers
gemino
myCSharp.de - Member



Dabei seit:
Beiträge: 7

Themenstarter:

beantworten | zitieren | melden

im prinzip geht es darum ein overlay für eine andere anwendung zu erstellen. soweit funktioniert das auch alles. allerdings geht es dann darum, das overlay auch mitzubewegen, wenn die andere anwendung verschoben wird.
eine variante wäre natürlich einen timer zu installieren, der in einem vorgegebenen intervall ein update der fensterposition macht.
besser finde ich allerdings die möglichkeit einen CBT hook an die fremde anwendung zu hängen, so dass ich das event direkt von windows gemeldet bekomme und sofort drauf reagieren kann.

tja und genau da sind wie wieder bei meinem vorigen posting, dass ein fehler entsteht wenn ich den hook erstelle.
private Nachricht | Beiträge des Benutzers