AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

programm in den vordergrund

Ein Thema von Mystery · begonnen am 4. Mär 2012 · letzter Beitrag vom 4. Mär 2012
Antwort Antwort
Mystery

Registriert seit: 26. Nov 2011
20 Beiträge
 
#1

programm in den vordergrund

  Alt 4. Mär 2012, 10:32
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:
SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE or SWP_NOMOVE);
Außerdem habe ich auf einem Timer:

Code:
procedure TForm1.Timer1Timer(Sender: TObject);
var
h: hwnd;
wnd:hwnd;
begin
Form1.SetFocus;
h := FindWindow(nil,'Project1');
if h <> 0 then BringWindowToTop(h);
end;
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 ..

Gibt es eine Möglichkeit, mein Programm noch eine Ebene vor das andere Prgramm zu setzen?
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#2

AW: programm in den vordergrund

  Alt 4. Mär 2012, 10:52
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.
  Mit Zitat antworten Zitat
Mystery

Registriert seit: 26. Nov 2011
20 Beiträge
 
#3

AW: programm in den vordergrund

  Alt 4. Mär 2012, 10:56
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
  Mit Zitat antworten Zitat
Mystery

Registriert seit: 26. Nov 2011
20 Beiträge
 
#4

AW: programm in den vordergrund

  Alt 4. Mär 2012, 11:22
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


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);

Geändert von Mystery ( 4. Mär 2012 um 11:31 Uhr)
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#5

AW: programm in den vordergrund

  Alt 4. Mär 2012, 11:42
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ß).
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: programm in den vordergrund

  Alt 4. Mär 2012, 12:33
http://www.delphipraxis.net/123142-f...inimieren.html

Beitrag 23 und 26
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Mystery

Registriert seit: 26. Nov 2011
20 Beiträge
 
#7

AW: programm in den vordergrund

  Alt 4. Mär 2012, 13:30
Code:
SetWindowLong(Handle, GWL_EXSTYLE, getWindowLong(Handle, GWL_EXSTYLE) or WS_EX_TRANSPARENT or WS_EX_LAYERED);
erfüllt seinen zweck, jedoch habe ich ein Label, welches sichtbar bleiben sollte..

// 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..

Geändert von Mystery ( 4. Mär 2012 um 13:35 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:04 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz