Autor Beitrag
Brainiac
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 04.10.07 19:20 
Hi!

Ich versuche gerade, ein Programm in das ich mich einhooke davon abzuhalten, sich selbst in den Vordergrund zu setzen.

Ich weiß, dass ab WinXP ein Prozess prinzipiell ein spezielles Recht besitzen muss, um SetForeGroundWindow aufzurufen (was aber standardmäßig gesetzt ist). Ich finde nur nicht heraus, wie ich dieses Recht ausschalten kann.

Kann mir da jemand weiterhelfen?

THX

---

Hm... also von diesem Programm bin ich echt entnervt... hab noch nie gesehen, dass sich etwas dermaßen aggressiv in den Vordergrund gesetzt hat. Theoretisch ist bei mir ja schon von TweakUI her ausgeschaltet, dass Anwendungen den Fokus stehlen können.

Moderiert von user profile iconNarses: Doppelposting entfernt.
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Sa 06.10.07 14:12 
Überschreib beim Hooken SetForegroundWindow mit einer leeren Funktion UND MoveWindows so, dass es das TOPMOST-Flag ignorier.

BTW: Um was für eine Anwendung handelt es sich denn?

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
Brainiac
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 06.10.07 18:26 
Hm ja... muss ich mal sehen.

Gibt's eigentlich noch andere Funktionen, mit denen sich ein Fenster in Windows in den Vordergrund zwingen kann? Bei mir sollte theoretisch in der Registry schon ausgeschaltet sein, dass SetForegroundWindow überhaupt benutzt werden kann, um den Fokus zu stehlen. Hab auch bis jetzt kaum gesehen, dass irgendein Programm das so aggressiv durchzieht.

Ist ein Online-Poker Client.
Brainiac
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 09.10.07 08:27 
user profile iconBenBE hat folgendes geschrieben:
Überschreib beim Hooken SetForegroundWindow mit einer leeren Funktion UND MoveWindows so, dass es das TOPMOST-Flag ignorier.


Ich hab jetzt erstmal noch nach anderen Möglichkeiten gesucht aber erstmal keine Gefunden. Man könnte noch versuchen einen WH_SHELL Hook zu verwenden und die Aktivierungsmessage des Fensters abzufangen. Aber ich bin mir nich so sicher ob das funktionieren würde.

Jetzt muss ich erst nochmal dumm fragen: Wie überschreibe ich denn eine beliebige Funktion für eine Anwendung?
Oder meintest du, ich soll dem Programm irgendwie eine gefakete user32.dll aufzwingen?


EDIT: Ich sollte erwähnen, dass das Zielprogramm alle Zugriffsanfragen über OpenProcess ablehnt. Daher wird DLL-Injection wohl nicht in Frage kommen.