Seite 1 von 1
Eigene Anwendung in ein Spiel "einbauen bzw. drüberlege
Verfasst: 04.03.2008 04:44
von PGO
Ich möchte ein kleines Programm programmieren, was über ein Fullscreen-Spiel (z.B. WoW) ein kleines Fenster mit ein paar Tools legt, ähnlich wie bei X-Fire (nein, es soll kein Chat-Prog werden), ist so etwas mit PureBasic möglich? Hab schon lange rumprobiert und die Hilfe auf und ab studiert, bin aber zu keinem Ergebnis gekommen.
Verfasst: 04.03.2008 10:50
von Dostej
Hier im Forum gibts einen Zusatz, der so was kann:
http://www.purebasic.fr/german/viewtopi ... hlight=sgx
Damit solltest Du fenster im ScreenModus machen können
Verfasst: 04.03.2008 14:49
von Kaeru Gaman
@Dostej
ne, das ist was für Gadgets im eigenen Screen, ich glaub nicht dass er sowas gebrauchen kann.
@PGO
ich hab da nich soviel Ahnung von, wurde schon des öfteren gefragt hier im Forum,
lässt sich also auch was dazu finden.
spontan würde ich mal sagen:
wenn das Vollbild-Game mit einem maximierten Fenster arbeitet
statt mit einem klassischen Fullscreen, was unter XP eigentlich üblich ist,
dann könnte es sogar schon genügen,
wenn du deinem anwendungsfenster das AlwaysOnTop-Flag mitgibst.
Verfasst: 04.03.2008 16:48
von PGO
Mit einem AllwaysOnTopFenster funktioniert das ganze nicht. Wie könnte so etwas denn heißen? Hab schon gesucht aber nichts gefunden.
edit: hab evtl doch was:
http://www.purebasic.fr/german/viewtopic.php?t=15520 nachher mal gucken, ob ich was damit anfangen kann.
Verfasst: 05.03.2008 01:14
von PGO
Leider hilft mir das nicht weiter. Das einzige was mir der Code bringt, ist dass das was im Spiel angezeigt wird nur beim Umschalten zw. Windows und den Spiel angezeigt wird.
Code: Alles auswählen
Procedure draw()
direction = 2
Repeat
; Es ist sehr wichtig, alle im Queue befindlichen Ereignisse während jedes Frames abzuarbeiten
;
FlipBuffers(0) ;<-- hab ich auch alle möglichen Werte probiert
ClearScreen(RGB(0, 0, 0))
DisplaySprite(0, x, x)
x + direction
If x > 140 : direction = -2 : EndIf
If x < 0 : direction = 2 : EndIf
Delay(1)
ForEver
EndProcedure
If InitSprite() = 0
MessageRequester("Error", "Can't open screen & sprite enviroment!", 0)
EndIf
Handle = FindWindow_(#NUL, "GAME")
SetForegroundWindow_(Handle)
If OpenWindowedScreen(Handle, 0, 0, 160, 160, 0, 0, 0)
CreateSprite(0, 20, 20)
If StartDrawing(SpriteOutput(0))
Box(0, 0, 20, 20, RGB(255, 0, 155))
Box(5, 5, 10, 10, RGB(155, 0, 255))
StopDrawing()
EndIf
EndIf
CreateThread(@draw(),0)
Repeat
Delay(10)
SendMessage_(Handle,#PB_Event_Repaint,0,0)
ForEver
Verfasst: 05.03.2008 18:07
von Thorium
Das Zauberwort heisst. Direct3D- bzw. OpenGL-Hook.
Ist aber nicht so simpel. Obwohl, bei OpenGL gehts noch.
Hier ein 3 teiliges Tutorial wie man einen Direct3D9-Hook realisiert und ihn nutzt um ein eigenes Menü in in einem fremden Spiel anzuzeigen. Ich sags aber gleich: Ist nicht ganz einfach und Assemblerkenntnisse werden vorrausgesetzt.
http://gghz.de/viewtopic.php?t=145
http://gghz.de/viewtopic.php?t=147
http://gghz.de/viewtopic.php?t=151
Verfasst: 05.03.2008 18:35
von Fluid Byte
Ich steh auf son' Zeugs!
Danke für den Hinweis auf diese nützlichen Tutorials.
Verfasst: 06.03.2008 01:41
von PGO
mit asm kenn ich mich leider gar nicht aus, aber danke für deine Hilfe