![]() |
programm in den vordergrund
Stehe vor folgendem Problem:
Ich versuche ein kleines Addon für ein Spiel zu schreiben. Dafür öffne ich meine programmierte .exe datei, die sich dann in den Vordergrund schiebt. Das funktioniert auch soweit mit:
Code:
Außerdem habe ich auf einem Timer:
SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE or SWP_NOMOVE);
Code:
Das Problem: Das Programm vor dem mein Programm erscheinen soll, hat anscheinend auch Code, das es im Vordergrund bleibt, da wenn beides Geöffnet ist, es wie wild hin und er blinkt ..
procedure TForm1.Timer1Timer(Sender: TObject);
var h: hwnd; wnd:hwnd; begin Form1.SetFocus; h := FindWindow(nil,'Project1'); if h <> 0 then BringWindowToTop(h); end; Gibt es eine Möglichkeit, mein Programm noch eine Ebene vor das andere Prgramm zu setzen? |
AW: programm in den vordergrund
Meiner Kenntnis nach: Top ist Top. Toper als Top gibt es nicht. Ok, es gibt TopMost, aber das ist für mich Top.
Wenn auch das andere Programm mit einem Timer arbeite, dann... Vielleicht eine andere Idee: guck dir mal die Komponente ApplicationEvents an und da OnDeactivate. |
AW: programm in den vordergrund
danke, werd ich mir mal anschauen :) ich weiß jedenfalls, das es irgendwie gehen muss.
ist für das Spiel league of legends (falls euch der name was sagt ) ^^ Es gibt bereits Programme dafür, die ebenfalls mittels Delphi geschrieben wurden, und auch im Vordergrund bleiben. Diese Erfüllen leider nicht alles, was ich mir wünsche, deshalb wollte ich es leicht ändern, scheiter nur daran es im Vordergrund zu halten :D |
AW: programm in den vordergrund
Ok so ganz verstehe ich die neue Komponente noch nicht, habe ich bisher noch nie verwendet. Hilfe hab ich mir durchgelesen ;)
Was genau kann Ondeactivate?! hab da einfach mal meinen Code reinkopiert, aber das war es anscheinend nicht :D Bei OnCreate hab ich das hinzugefügt: Application.OnDeactivate := ApplicationEvents1Deactivate; und in und in der Procedure Applicationevents1ondeactivate: h := FindWindow(nil,'Project1'); if h <> 0 then BringWindowToTop(h); |
AW: programm in den vordergrund
Also ob das was bringt weiß ich nicht, es ist nur eine Idee.
Was macht die Komponente ApplicationEvents? Eigentlich nicht was was du nicht mit paar Zeilen auch ohne sie machen könntest. ApplicationEvents bietet vereinfachten Zugriff auf die Events der Application. Und OnDeactivate wird lauf Hilfe ausgelöst wenn eine andere Anwendung den Fokus erhält. Und in der Regel, wenn auch nicht ausdrücklich, schnappt sich ein Programm das in den Vordergrund geschoben wird auch den Fokus (ist aber kein Muß). |
AW: programm in den vordergrund
|
AW: programm in den vordergrund
Code:
erfüllt seinen zweck, jedoch habe ich ein Label, welches sichtbar bleiben sollte..
SetWindowLong(Handle, GWL_EXSTYLE, getWindowLong(Handle, GWL_EXSTYLE) or WS_EX_TRANSPARENT or WS_EX_LAYERED);
// Oder das ich per form1.canvas.textout irgendwie text sichtbar machen kann.. //wenn in die Lautstärke im Spiel ändere, erscheint ja auch das Symbol der box, schiebt sich also vor das spiel, und die flackert nicht.. :D |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:51 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