DirectX Hook im Gui (via GDIP(?))

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

User avatar
Renz
Posts: 17
Joined: 05 Sep 2015, 21:56
GitHub: renzone
Location: Dortmund (NRW|GER)

DirectX Hook im Gui (via GDIP(?))

04 Mar 2018, 09:37

Hey,

Ich habe mal eine Frage ist es möglich mit dieser API(Directx Hook): https://github.com/agrippa1994/DX9-Overlay-API zb. Strings auf dem Desktop anzeigen zulassen, in einem Gui, evtl dargestellt per GDIP(?)...
Ich bin gerade dabei mit GDIP rumzuprobieren, aber derzeit leider noch erfolglos...
Hat jemand eine Idee, oder sogar Ahnung davon ? :)

Gruß
Renz
just me
Posts: 5397
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: DirectX Hook im Gui (via GDIP(?))

05 Mar 2018, 03:27

Moin,

soweit ich weiß, ist DirectX eine Alternative zu den Windows GDI/GDI+ Funktionen, die die Grafikausgabe durch direkten Zugriff auf die Grafikhardware beschleunigen kann.

Renz wrote:... zb. Strings auf dem Desktop anzeigen zulassen, in einem Gui, evtl dargestellt per GDIP(?)...
Kannst Du etwas detaillierter beschreiben, was Du tun willst?

Zum Thema GDIP: Für manche Funktionen ist es entscheidend, das zur AHK-Version (32/64 Bit) passende GDIP-Skript zu verwenden. Es gibt mehrere unterschiedliche Skripte. Die ursprüngliche Version von tic ist in Teilen nur für 32-Bit funktionsfähig.
User avatar
Renz
Posts: 17
Joined: 05 Sep 2015, 21:56
GitHub: renzone
Location: Dortmund (NRW|GER)

Re: DirectX Hook im Gui (via GDIP(?))

06 Mar 2018, 11:53

Hey, Sry für die späte Antwort...

just me wrote:Kannst Du etwas detaillierter beschreiben, was Du tun willst?


Klar, Ich versuche mir derzeit eine Klasse zuerstellen die mir hilft dabei mit GDIP zuarbeiten für Grafische Overlays auf dem Desktop, statt der "herkömmlichen" Guis/Fenster.
Man kann natürlich auch per HTML/CSS die Guis gestalten, aber das ist "für mich" nicht das richtige^^

Das mit dem Directx Hook von meinem 1. Beitrag ist hinfällig, da ich mich entschieden habe nur mit GDIP zu arbeiten, da es genau das erfüllt was ich suche...

Diesbezüglich hätte ich eine Frage,
Wenn ich mit meiner Klasse eine Box erstelle mit den Koordinaten X=0 Y=0 W=100 H=100 ist alles gut, die Box wird gut angezeigt...
Wenn ich aber die X bzw Y Koordinate erhöhe +10 sind schon genug, verändert sich die ganze Box und die Ränder verziehen und verschwinden...

Kleines Testskript


Hätte jemand dazu evtl eine Idee?
Liegt es an UpdateLayeredWindow() evtl benutze ich es falsch?

Gruß
User avatar
nnnik
Posts: 2909
Joined: 30 Sep 2013, 01:01
Location: Germany

Re: DirectX Hook im Gui (via GDIP(?))

06 Mar 2018, 12:11

Ich hab den Fehler gefunden.
GDIp zeichnet nicht relativ zum Bildschirm sondern relativ zu der Bitmap auf die du gerade Zeichnest.
Wenn du also ein Rechteck bei 0,0 Zeichnen lässt und es dann per UpdateLayeredWindow auf deine GUI legst wird dieses Rechteck in der linken oberen Ecke anfangen.
Du zeichnest jedoch das Rechteck und deinen Rahmen mit einem Offset, sodass sie nicht mehr genau auf deinem GUI liegen.

Es ist zudem Erwähnenswert, dass die Rect Struktur von Windows sehr leicht zu Fehlern führen kann wenn man nicht aufpasst.
Und ich finde es komisch den Rahmen unter die Box zu legen.
Recommends AHK Studio
User avatar
nnnik
Posts: 2909
Joined: 30 Sep 2013, 01:01
Location: Germany

Re: DirectX Hook im Gui (via GDIP(?))

06 Mar 2018, 12:13

Code: [Select all] [Expand] [Download] GeSHi © Codebox Plus

Recommends AHK Studio
User avatar
Renz
Posts: 17
Joined: 05 Sep 2015, 21:56
GitHub: renzone
Location: Dortmund (NRW|GER)

Re: DirectX Hook im Gui (via GDIP(?))

09 Mar 2018, 00:42

Hey,

nnnik wrote:Ich hab den Fehler gefunden.
GDIp zeichnet nicht relativ zum Bildschirm sondern relativ zu der Bitmap auf die du gerade Zeichnest.
Wenn du also ein Rechteck bei 0,0 Zeichnen lässt und es dann per UpdateLayeredWindow auf deine GUI legst wird dieses Rechteck in der linken oberen Ecke anfangen.
Du zeichnest jedoch das Rechteck und deinen Rahmen mit einem Offset, sodass sie nicht mehr genau auf deinem GUI liegen.

Oh vielen dank, werde mir das nochmal genauer anschauen heute, hab ja frei :D

nnnik wrote:Es ist zudem Erwähnenswert, dass die Rect Struktur von Windows sehr leicht zu Fehlern führen kann wenn man nicht aufpasst.

Vielen Dank für den Hinweis :)
Gibt es Alternativen ? Selber erstellen per Linien?

nnnik wrote:Und ich finde es komisch den Rahmen unter die Box zu legen.

Das wurde bereits behoben, hatte das nur noch gelassen, da ich mich erstmal um die darstellung des Rahmens kümmern wollte ^^
User avatar
nnnik
Posts: 2909
Joined: 30 Sep 2013, 01:01
Location: Germany

Re: DirectX Hook im Gui (via GDIP(?))

09 Mar 2018, 05:20

Oh ich habs vergessen zu sagen aber was ich meinte ist in der linken, oberen Ecke der GUI.

Bei der RECT Struktur reicht es eignetlich, wenn du dir anschaust was in MSDN darüber steht.
Wenn du das nicht machst läufst du Gefahr, dass deine Ränder sich z.B. um ein Pixel verschieben und du nicht weißt wieso.
Recommends AHK Studio
User avatar
Renz
Posts: 17
Joined: 05 Sep 2015, 21:56
GitHub: renzone
Location: Dortmund (NRW|GER)

Re: DirectX Hook im Gui (via GDIP(?))

10 Mar 2018, 09:23

nnnik wrote:Oh ich habs vergessen zu sagen aber was ich meinte ist in der linken, oberen Ecke der GUI.

Bei der RECT Struktur reicht es eignetlich, wenn du dir anschaust was in MSDN darüber steht.
Wenn du das nicht machst läufst du Gefahr, dass deine Ränder sich z.B. um ein Pixel verschieben und du nicht weißt wieso.


Vielen Dank, das werde ich berücksichtigen, lese mich da gleich rein :)

Ich habe eine Frage zur Anordnung der Gui´s,
Wie kann ich es am besten lösen, das die Gui´s eine feste Reihenfolge haben?

Hier ein Test Skript was mein Problem darstellt...

Code: [Select all] [Expand] [Download] GeSHi © Codebox Plus



Ich hoffe jemand hat eine Idee, bin derzeit am versuchen das ganze über GetControlFocus(?) zu lösen, aber bisher erfolglos...
just me
Posts: 5397
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: DirectX Hook im Gui (via GDIP(?))

10 Mar 2018, 10:40

Moin,

wenn sich das Ganze dem Betrachter als ein Fenster darstellen soll, ist das Konzept, für unterschiedliche Gui-Bereiche unterschiedliche Top-Level-Fenster zu erstellen, gelinde gesagt suboptimal. Ich halte in diesem Fall eine Bitmap, in die alle Bestandteile des 'Gui-Fensters' nacheinander gezeichnet werden, für besser. Deine Klassenstruktur muss dafür aber massiv überarbeitet werden.

Zur Klasse an sich: Kompliment!
User avatar
Renz
Posts: 17
Joined: 05 Sep 2015, 21:56
GitHub: renzone
Location: Dortmund (NRW|GER)

Re: DirectX Hook im Gui (via GDIP(?))

10 Mar 2018, 10:56

just me wrote:Moin,

wenn sich das Ganze dem Betrachter als ein Fenster darstellen soll, ist das Konzept, für unterschiedliche Gui-Bereiche unterschiedliche Top-Level-Fenster zu erstellen, gelinde gesagt suboptimal.

Ja, ich bemerke es auch langsam...

just me wrote:Ich halte in diesem Fall eine Bitmap, in die alle Bestandteile des 'Gui-Fensters' nacheinander gezeichnet werden, für besser.
Deine Klassenstruktur muss dafür aber massiv überarbeitet werden.

Das werde ich denk ich in angriff nehmen, diese Version ruhen lassen und V2 mit Bitmap schreiben...
Diese ganzen Gui´s sind auch nicht sehr performant, schon alleine beim aufbau, hatte das mal mit 100+ getestet, irgendwann bei 30-40 ca. verzögert sich schon die Darstellung ...

just me wrote:Zur Klasse an sich: Kompliment!

Danke :)

Return to “Ich brauche Hilfe”

Who is online

Users browsing this forum: No registered users and 1 guest