![]() |
Re: Nachrichten vollkommen abfangen
Zitat:
Es ist so schwer den falschen Weg zu meiden; Eine gesunde Einstellung für einen Entwickler ... wenn mein Programm beim Benutzer abstürzt "hat der Benutzer wohl was falsch gemacht". Mag sein, daß es damals noch nicht funktionierte (es ist schon einige Zeit her). Aber dennoch sollte ein solches Paket immer stabilstmöglich laufen. Zitat:
Wie du vielleicht siehst, ist dein Beispielvergleich sinnlos ohne die Rahmendaten. Genauso sinnlos wie vermeintliche Optimierungen von diversen Assemblerprogrammierern. Zitat:
Und das mit Recht: denn alles, was entsteht, ist werth, daß es zu Grunde geht. Da du Kritik offenbar nicht als konstruktiv (du könntest ja die Rahmendaten nennen) auffassen kannst, verbleibe ich mit besten Grüssen. Zitat:
Das mit der Geschwindigkeit hängt aber nach wie vor von den Rahmenbedingungen ab. Aber wie ich sehe renne ich damit gegen massive Wände. Nichtsdestotrotz ist Hooking, sei es nun SSDT-Hooking oder eben API-Hooking im Usermode eine potentiell riskante Sache. Ein PC ist ein sehr universelles Gerät mit reichhaltiger Softwareauswahl. Wie willst du garantieren, daß deine Software mit allen sauber interagiert *). Und vor allem, warum willst du nicht die windowseigenen und damit offiziell unterstützten (und potentiell sichereren) Methoden (Message-Hooks WH_* z.B.) Methoden einem API-Hook vorziehen? Ja, ein API-Hook mag irrelevant sein. Woher nimmst du aber die Annahme, daß dein Programm das einzige wäre, welches eine bestimmte API hookt? *) Wenn ein Programm - sagen wir MS Word - abstürzt, nachdem dein Programm installiert wurde; und wenn dies passiert, weil bei Word getrickst wurde (dein Programm sei also nicht schuld für mein Besipiel) - glaubst du im Ernst, daß man Word deshalb runterwerfen und die Schuld geben würde? |
Re: Nachrichten vollkommen abfangen
Zitat:
Denn wenn du das Programm geschrieben hast, war es wohl nicht des Benutzers Schuld. Zitat:
Vielleicht läuft es ja nun stabil, zumindest bin ich der Meinung. Zitat:
Natürlich ist hier nichts anderes miteinberechnet, was getan werden müsste, dass die ganze Aktion auch sinnvoll ist. Ich will damit eigentlich nur sagen: auch ein Windows-Hook verbrät (mind.) soviel, wie ein API Hook. Daher sind API-Hook und Windows-Hook von der Performance her gleich einzustufen. Zitat:
Zu meiner "Messung": Wie schon aus meiner Aussage hervorgeht, hab ich dies nicht gemessen, sondern geschätzt. Zitat:
ciao, Philipp |
Re: Nachrichten vollkommen abfangen
Moin ihr Beiden,
ich möchte doch dringend darum bitten wieder zum Thema zu kommen, und die begonnene Diskussion ggf. in einem anderen Thread fortzuführen. Danke. Falls ihr wollt, kann dieser Thread auch geteilt werden, und als Basis für einen neuen dienen. Dann bitte per PN melden. |
Re: Nachrichten vollkommen abfangen
Danke für die rege Beteiligung :wink:.
Zitat:
greez P.S.: Ich stelle gerade fest, dass für die Benutzung des MadCodeHooks anscheinend Adminprivilegien erforderlich sind. Liege ich da richtig? Wäre dies der Fall würde diese Möglichkeit für mich schon mal nicht in Frage kommen :|. |
Re: Nachrichten vollkommen abfangen
Zitat:
Zitat:
Mit Worten läßt sich trefflich streiten, Mit Worten ein System bereiten, An Worte läßt sich trefflich glauben, Von einem Wort läßt sich kein Iota rauben. Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Wenn es nur um das Hooken von Prozessen der gleichen Privilegienstufe (z.B. gleicher Benutzer) geht, sollte es aber möglich sein dies ohne spezielle Privilegien zu erreichen. Ich kenne seine aktuelle Implementierung nicht und habe keine Zeit mir das mit DeDe näher anzuschauen. Es gab da mal eine OpenSource-Implementierung mit SetCapture(), die du eventuell als Anschauungsmaterial verwenden kannst. Zu finden war das (ist schon lange her) unter: ![]() Der Autor treibt sich meines Wissens auch hier im Forum herum, versuche ihn einfach zu kontaktieren. Ansonsten sind mir nur C/C++-Implementierungen bekannt. Im Platform SDK gibt es ein Beispiel namens "Drawing Lines with the Mouse": ms-help://MS.PSDK.1033/winui/winui/windowsuserinterface/userinput/mouseinput/usingmouseinput.htm (Der Link gilt mit dem letzten aktuellen 2003er Platform SDK) |
Re: Nachrichten vollkommen abfangen
Das Problem mit SetCapture ist, dass ich es ja erst setzen kann, wenn irgendwo die Nachricht WM_RBUTTONDOWN auftritt. Das hat wiederrum die Folge, dass ich genau diese Nachricht nicht mehr mit SetCapture "aufhalten" kann, da das MouseCapturing erst aktiv wird, nachdem WM_RBUTTONDOWN schon verschickt wurde. Der Effekt ist z.B. dass Fenster aktiviert werden oder der Cursor in einem Editor gesetzt.
|
Re: Nachrichten vollkommen abfangen
Hast du schonmal versucht das SetCapture() aufzurufen, ohne ein sichtbares Fenster haben zu müssen? Das einzige Problem sollte doch sein, daß du irgendein spezielles Signal geben mußt, damit dein Fenster bescheid bekommt, daß es SetCapture() aufrufen muß. Ich hab's zugegebenermaßen so noch nicht getestet - da bisher immer ein Ausgangspunkt (/-fenster) für SetCapture() sichtbar existierte.
|
Re: Nachrichten vollkommen abfangen
Zitat:
Meine Anwendung soll ja im Hintergrund laufen und erst aktiv werden, wenn der Benutzer z.b. die rechte Maustaste drückt um zu zeichnen. |
Re: Nachrichten vollkommen abfangen
Rechtsklick reicht meines Erachtens nach nicht aus. Es ist zu unspezifisch und gemeinhin das Signal ein Kontextmenü zu zeigen. Es müßte z.B. zur gleichen Zeit auch eine Taste gedrückt sein.
|
Re: Nachrichten vollkommen abfangen
Genau dies möchte ich aber nicht :wink:. Die Maus muss ausreichen.
In einem Posting zuvor erwähntest du, dass es möglich ist mittels Subclassing und DLL-Injection die Nachrichtenweitergabe an Anwendungen zu verhindern. Könntest du das bitte genauer Erläutern? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:21 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz