Laden...

Form IMMER vor externer Anwendung

Erstellt von Söckchen vor 15 Jahren Letzter Beitrag vor 15 Jahren 1.360 Views
S
Söckchen Themenstarter:in
50 Beiträge seit 2006
vor 15 Jahren
Form IMMER vor externer Anwendung

Hallo liebe C#'ler,

ich habe momentan ein Problem wo ich absolut keine Lösung für finde, weil mir der ganze Gedankenansatz fehlt (Brett vor'm Kopf 😉 ). Ich versuche mein Problem mal genau zu bescheiben:

Ich möchte ein Programm erstellen, was einen kleinen rechteckigen Kasten zeichnet der JEDERZEIT (und das ist das wichtigste) vor einer externen Anwendung ist. Nun wäre das ja kein Problem, wenn man erst die externe Anwendung öffnet und hinterher den Kasten zeichnet, nur gibt es das Problem dass sich die externe Anwendung aufgrund von Geschehnissen innerhalb des Programms selber den Focus gibt und damit OnTop springt. Das soll bzw darf aber nicht passieren. Sprich mein Programm sollte das direkt abfragen und sofort wieder vor die Anwendung springen (und wenn möglich ohne dass man auch nur einen Bruchteil einer sekunde den Teil der externen Anwendung sieht der vorher verdeckt war).

Ich weiß dass es geht, da ich das schonmal in einem Anderen Programm gesehen habe (hoffe das ist auch mit C# lösbar), aber ich weiß momentan gar nicht wie ich an die Sache rangehen soll und ich wäre hier für jeden Rat und jeden Tipp dankbar.

PS: Was ich noch vergessen habe zu erwähnen was aber eigentlich selbstverständlich sein sollte: Das ganze sollte Ressourcenschonend sein 🙂

Danke im Vorraus 👍

Jeder fängt mal klein an!

C
252 Beiträge seit 2007
vor 15 Jahren

Eventuell ist Form.TopMost genau das was du suchst.

1.200 Beiträge seit 2007
vor 15 Jahren

Ich weiss nicht, ob die TopMost Eigenschaft auch die Fenster anderer Prozesse nach hinten drückt. Ich glaube aber nicht.

Du kannst jedoch radikal immer SetForegroundWindow aufrufen um dein Fenster vorne zu halten.

Ich glaube ausserdem, das so etwas keine Applikation tun sollte und du das Problem an anderer Stelle lösen solltest. Was willst du genau tun?

Shift to the left, shift to the right!
Pop up, push down, byte, byte, byte!

YARRRRRR!

360 Beiträge seit 2005
vor 15 Jahren

Moin,

vor allen Dingen ist die Frage interessant vor was für eine Anwendung du das Fenster legen willst. Deine Hinweis auf die Performance lässt mich vermuten, dass du es über ein Spiel legen willst?

Gruß,
Markus 🙂

P
321 Beiträge seit 2008
vor 15 Jahren

bestimmt so ein sniper der sich selber ein fadenkreuz baut, damit er nicht anvisieren muss bzw vorteile hat im nahkampf^^

Use the source, Luke!

Nur, weil man vor sich eine CPU hat, muß man das Denken nicht
einstellen.

M
134 Beiträge seit 2006
vor 15 Jahren

Hi

Auch wenn es vielleicht etwas an Thema vorbei geht ...
Also wenn es nur um das Fadenkreuz geht ...
Ich hab auch schon Leute gesehen die sich ein kleines Klebeband auf den
Monitor geklebt haben und darauf ihr Fadenkreuz gezeichnet haben ...

Ist mit Sicherheit Ressourcenschonend 🙂

Beantwortet die Frage aber nicht ... X(

Gruß

S
Söckchen Themenstarter:in
50 Beiträge seit 2006
vor 15 Jahren

Erstmal danke schön für eure Anworten.

Nein es soll nicht als Fadenkreuz dienen, aber ihr habt schon recht es soll vor ein Spiel. Um genau zu sein vor eine Pokeranwendung die sich selber den Fokus gibt sobald man an der Reihe ist.

Also was sind eure Vorschläge? 🙂

Jeder fängt mal klein an!

360 Beiträge seit 2005
vor 15 Jahren

Die Pokeranwendung, läuft die in einer Windows-Form oder ist die Fullscreen? Verwendet die DirectX o.Ä?

S
Söckchen Themenstarter:in
50 Beiträge seit 2006
vor 15 Jahren

Die Pokeranwendung, läuft die in einer Windows-Form oder ist die Fullscreen? Verwendet die DirectX o.Ä?

Sie läuft in einer Windows-Form und nicht Fullscreen. Aber ob sie DirectX benutzt kann ich dir leider nicht sagen. Wie kann ich das rausfinden?

Jeder fängt mal klein an!

P
67 Beiträge seit 2008
vor 15 Jahren

Wie man das herrausfinden kann, kann ich dir zwar nicht sagen, aber sollte die Windows-Form - die ja letzendlich nur das D3DX-Device kapselt - fremde Forms nicht blocken o.ä.

Vielleicht hilft da schon die WM_KILLFOCUS(0x07) abzufangen und, wie GMLOD sagte, SetForegroundWindow zu benutzen.

Religionskriege sind Konflikte zwischen erwachsenen Menschen, bei denen es darum geht, wer den cooleren, imaginaeren Freund hat

S
Söckchen Themenstarter:in
50 Beiträge seit 2006
vor 15 Jahren

Ich gehe einfach mal davon aus dass DirectX nicht benutzt wird. Aber wie müsste ich jetzt genau vorgehen? Ich habe mir die SetForegroundWindow-Funktion mal angeschaut, aber das bringt mich momentan nicht weiter. Wüsste nicht wie ich das jetzt genau in die Anwendung mit einbaue. 🤔

Jeder fängt mal klein an!

C
252 Beiträge seit 2007
vor 15 Jahren

Hast du Form.TopMost jetzt schon probiert? Warum immer kompliziert wenn es uU auch einfach geht. Ich habe das ganz mal mit Piontifex2(derzeit das einzige Spiel, das ich am Lappi installiert hab) probiert und da klappt das einwandfrei.

S
Söckchen Themenstarter:in
50 Beiträge seit 2006
vor 15 Jahren

Achso entschuldigung, hatte ganz vergessen da was zu zu schreiben: TopMost klappt leider nicht, da die Anwendung trotzdem sobald der Pokertisch den Fokus bekommt in den Hintergrund springt.

Jeder fängt mal klein an!