Grafikprogramm, das absolut immer im Vordergrund steht?
-
danke, werde den tip mal ausprobieren!
-
hi
hab das ganze mit WS_EX_TOPMOST nun ausprobiert.
das fenster bleibt im normalen desktopbetrieb wirklich immer im vordergrund, aber eine vollbildanwendung (getestet an einem spiel) überdeckt das fenster trotzdem
-
Ja weil das programm auch das Flag hat und danach gestartet wurde.
Vielleicht einen Timer und dann immer in der Vordergrund holen?
-
ok werd auch das mal probieren

**edit:
öhm, wie hole ich das fenster wieder nach vorne?
erneuter aufruf von ShowWindow wirkt nicht und UpdateWindow auch nicht.entweder sind das die falschen befehle, um das fenster vorzuholen, oder vorholen generell bringt nichts, da das fenster trotzdem hinter dem spiel bleibt.
oder kann es sein, dass das programm nicht mehr auf den timer - und somit auch nicht mehr auf ShowWindow und UpdateWindow - reagiert, wenn es inaktiv ist (da ein anderes fenster angeklickt/geöffnet wurde)?
**edit2:
mit SetForegroundWindow() wird das fenster zwar in den vordergrund geholt, aber das spiel minimiert, anstatt es zu überlagern
-
Das Spiel wird bestimmt nicht von SetForegroundWindow() minimiert, sondern es minimiert sich selbst wenn es den Fokus verliert.
Du kannst einfach alle paar Sekunden oder so das Fenster zu und wieder aufmachen, dann sollte es im Vordergrund sein ohne den Fokus zu bekommen.
Sobald du draufklickst ist es natürlich wieder im Fokus und das Spiel ist weg.Du kannst ein bischen rumhacken und dem Spiel immer die Nachricht klauen, dass es den Fokus verloren hat. Weiß grad nicht wie die Message heißt und keine Ahnung wie genau man die Message Queue von Programmen manipuliert, es geht aber und es sollten genug Anleitungen dafür geben. Üblicherweise klaut man Programmen die Set_visible-message, dann ist das Fenster unsichtbar.
Wenn du das machst könntest du Probleme mit Programmen wie Firewall, Antivirenprogrammen, HackShield und GameGuard kriegen, aber wahrscheinlich können die es nicht entdecken.
Oh, und DirectX könnte rumspacken und das Spiel könnte deutlich langsamer werden, wegen Hardwarebeschleunigung und dem Fenster dass darüber liegt.
-
Also ich gehe fast davon aus, dass FRAPS etc. das anders machen. Irgendwie "direkt" über DirectX, bzw. mit irgendwelchen Hacks/Kunstgriffen.
Wäre bloss interessant wie FRAPS etc. das machen

-
hustbaer schrieb:
Also ich gehe fast davon aus, dass FRAPS etc. das anders machen. Irgendwie "direkt" über DirectX, bzw. mit irgendwelchen Hacks/Kunstgriffen.
Wäre bloss interessant wie FRAPS etc. das machen

jup, auf meinem uhrzeitcomputer zieht fraps im leerlauf auch keine FPS, nur wenn man wirklich das ganze geschehen aufzeichnet.
das mit den virenschutzprogrammen hatte ich schonmal zu spüren bekommen, als ich GameWiz32 bzw. ArtMoney nachschreiben wollte. beim zugriff auf einen anderen prozess hat mich meine - ich glaube damals wars noch bitdefender - sicherheitssuite, gleich rausgeschmissen

aber da fraps ja nicht bemerkt wird, bin ich mir nicht ganz sicher, ob die wirklich diesen weg über hacks nehmen.werde es trotzdem mal so versuchen, wenn ich zeit hab.
**edit:
also, alle paar sekunden das fenster zu schließen (CloseWindow()) und wieder zu öffnen (auch als inaktives fenster zu öffnen) führt zum selben ergebnis -> das spiel wird minimiert. selbiges beim erneuten aufruf von ShowWindow() ohne vorheriges CloseWindow().
werd dann wohl mal das mit dem message-hack ausprobieren, aber hab dazu noch nichts hilfreiches mit google gefunden
-
google hilft mir leider beim finden einer möglichkeit zum manipulieren des message-verkehrs nicht

-
hustbaer schrieb:
Also ich gehe fast davon aus, dass FRAPS etc. das anders machen. Irgendwie "direkt" über DirectX, bzw. mit irgendwelchen Hacks/Kunstgriffen.
Wäre bloss interessant wie FRAPS etc. das machen

FRAPS hookt (wie xfire u.ä. auch) EndScene (von D3DX) und malt seine Menüs etc dort.
-
Achja, zum abfangen von fremden Messages: http://msdn.microsoft.com/en-us/library/ms644990(VS.85).aspx
Und übrigens, wie wäre es denn wenn du selber eine DLL injectest, EndScene hookst und dadrin deine Quadrate etc malst? Weiß ja nicht wie weit du schon bist mit deinen C++ Kentnissen.

-
hehe schrieb:
Achja, zum abfangen von fremden Messages: http://msdn.microsoft.com/en-us/library/ms644990(VS.85).aspx
Und übrigens, wie wäre es denn wenn du selber eine DLL injectest, EndScene hookst und dadrin deine Quadrate etc malst? Weiß ja nicht wie weit du schon bist mit deinen C++ Kentnissen.

ich denke ich kann mich als erfahrener programmierer bezeichnen, hab auch schon einige grafische projekte gemacht und bin daher einigermaßen vertraut mit der GDI und OpenGL (benutze aber meistens die irrlicht-engine, weil es als einzelperson doch etwas heftig ist, alles selber zu machen).
womit ich mich jedoch noch nicht wirklich beschäftigt habe sind dll's und "hacking".
hab letztens schon ein tutorial zur dll-injection gesehen, aber nicht weiter gelesen.
ein gutes tutorial - vielleicht auch mit bezug auf gerade dieses thema - wäre nicht schlecht