Eine Uhr für Guild Wars

  • Hey, ich hab ma ne Frage...

    Also ich hab mir gedacht vl. eine Uhr für das Online Spiel Guild Wars zu schreiben, was jetzt auch nicht das Problemm ist, die Uhr zu scripten...sondern es zu schaffen das die Uhr immer im Vordergrund bleibt, also sogar noch vor Guild Wars im Fullscreen, gehn muss es irgendwie, schließlich kann XFire das auch, wenn sich zb. einer Anmeldet erscheint von unten ein Popup und man kann trotzdem normal weiter spielen. Oder der Taskmanager, der Steht meine ich auch vor allen anderen Fenstern.

    Ich habs schon versucht mit

    Code
    WinSetOnTop ( "[CLASS:Test]", "", 1)
    WinSetOnTop ("[CLASS:Guild Wars]", "", 1)

    leider Erfolglos (vorm Firefox Fenster hab ichs schon hinbekommen, also vor anderen System Fenstern, nur Guild Wars halt nicht).

    Hätte da vl. einer eine helfende Idee? Wäre supi :D

    2 Mal editiert, zuletzt von Jon9992 (5. April 2010 um 11:21)

  • Benutz mal statt "[CLASS:Irgendwas]" den Titel von der Gui.
    Also z.b:

    [autoit]

    #include <GUIConstants.au3>
    GUICreate("Test")
    GUISetState(@SW_SHOW)
    WinSetOnTop("Test", "", 1)
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

    [/autoit]
  • Danke für die schnelle Antwort, ich habs ausprobiert, nur leider ohne Erfolg :( sobald ich Guild Wars in Fullscreen starte is das fenster wieder weg...

  • Ich habs jetzt so, hoffe das war richtig.

    Wenn ich jetzt GW starte und da hin klicke wo das Fenster währe, minimiert sich GW?? Gutes Zeichen?
    Sehn kann ich das Fenster trotzdem noch nicht...

  • Das geht nicht, du kannst höchstens so probieren:

    [autoit]

    Func SetPixel ($handle, $x, $y, $color)
    $dc= DllCall ("user32.dll", "int", "GetDC", "hwnd", $handle)
    $setpixel= DllCall ("gdi32.dll", "long", "SetPixel", "long", $dc[0], "long", $x, "long", $y, "long", $color)
    $realesedc= DllCall ("user32.dll", "int", "ReleaseDC", "hwnd", 0, "int", $dc[0])
    EndFunc

    [/autoit]

    Damit musst du dir deine Uhr dann malen, aber das malt zu langsam, es wird extrem Flackern, wenn man es überhaupt noch sieht.

    Man muss in den Frame zeichnen, damit das ordentlich dargestellt wird. ( Ist aber zu schwer das umzusetzen )

  • Hmm, hast recht klingt auch recht schwer :)
    Aber was mich dan noch interresieren würde wie XFire das macht...?

    Is kla wird warscheinlich C++ oder so sein, aber is das da auch so schwer?

    • Offizieller Beitrag

    Ja, das ist per se schwer, weil man in die DirectX-/OpenGL-Rendering-Pipeline wie oben beschrieben "von Hand" ein Fenster zeichnen muss. Das macht keinen Spaß und deshalb hat es außer XFire (was ja nur dem Zweck dient) auch kaum jemand eingebaut.

    Johannes

    p.s. Spiele können sich auch gegen solche Manipulationen wehren und tun das auch gerne...

  • Ok, da es ja anscheinend nur sehr komplizierte Wege giebt, eine Uhr in ein Spiel einzubauen...werd ich mich erstma an was anderem probieren.
    Aber trotzdem an alle ein danke, schließlich lernt ,man aus Fehlern (oder anderen Situationen) 8)