AGB  ·  Datenschutz  ·  Impressum  







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

In Fremdanwendung Informationen anzeigen

Ein Thema von Coder1990 · begonnen am 26. Jul 2008 · letzter Beitrag vom 27. Jul 2008
Antwort Antwort
Benutzerbild von Coder1990
Coder1990

Registriert seit: 2. Nov 2007
116 Beiträge
 
Delphi 2005 Personal
 
#1

In Fremdanwendung Informationen anzeigen

  Alt 26. Jul 2008, 17:58
Hi,

folgendes Problem:
Ich bin gerade dabei ein Programm zu schreiben dass auf Tastendruck (abgefangen durch einen globalen Hook) in einer Vollbild - Anwendung und oder Desktop eine Textinformation anzeigen soll.

Beispiel:
Ich bin gerade in Warcraft und drücke "i" dann soll oben rechts, in der ecke des bildschirms, die aktuelle uhrzeit angezeigt werden, vll noch 3 sekunden vorhanden bleiben (digital, soll während den drei sekunden weiterzählen) und dann wieder verschwinden.

Fragestellung:
Wie realisiere ich so eine Textanzeige? (vgl Wc3 Banlist, falls das jemand kennt)

btw Ich habe die Suche benutzt habe aber nicht gewusst nach welchen Stichworten ich suchen soll

MfG
  Mit Zitat antworten Zitat
new32

Registriert seit: 10. Mai 2005
160 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: In Fremdanwendung Informationen anzeigen

  Alt 26. Jul 2008, 18:27
FormName.ParentWindow:=ZielWnd; damit lässt sich ein Fenster in ein anderes integriert.
~?&/%§$§%\&?~
8)
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: In Fremdanwendung Informationen anzeigen

  Alt 26. Jul 2008, 18:32
Bei Overlay-Anwendungen ist dies jedoch alles andere als einfach. Dazu gibt es zahlreiche Themen doch eine Antwort konnte ich auf Anhieb keine finden: Hier im Forum suchenDirectX Overlay, dafür umso mehr Leute, die sich ebenfalls für eine Lösung interessieren.
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#4

Re: In Fremdanwendung Informationen anzeigen

  Alt 26. Jul 2008, 19:12
Hallo, ein Beispiel in C++ findet man hier:
[C++] Direct3D hooking sample
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von Coder1990
Coder1990

Registriert seit: 2. Nov 2007
116 Beiträge
 
Delphi 2005 Personal
 
#5

Re: In Fremdanwendung Informationen anzeigen

  Alt 26. Jul 2008, 21:13
Zitat von new32:
FormName.ParentWindow:=ZielWnd; damit lässt sich ein Fenster in ein anderes integriert.
ist glaub ich nicht das, was ich suche .. ich will ja auch in vollbild anwendungen (spiele) diese informationen anzeigen

Zitat von Matze:
Bei Overlay-Anwendungen ist dies jedoch alles andere als einfach. Dazu gibt es zahlreiche Themen doch eine Antwort konnte ich auf Anhieb keine finden: Hier im Forum suchenDirectX Overlay, dafür umso mehr Leute, die sich ebenfalls für eine Lösung interessieren.
Hab mir den MadCodeHook mal angesehen .. (Sonst fand ich da auch keine potentielle Lösung) .. wobei ich aber 1. keine Ahnung habe wie ich Api Hook installiere/benutze/deinstalliere und 2. ungern fremde Packages verwende (fremde Units nehme ich) komm ich da auch nicht weiter..

Zitat von toms:
Hallo, ein Beispiel in C++ findet man hier:
[C++] Direct3D hooking sample
Leider kann ich kein C++ (auch wenn ichs schon lang lernen wollte )

falls jemand vll eine direkt Lösung findet wäre ich sehr dankbar, es soll ja auch keine permanente Einblendung sein, sondern nur halt kurz die Uhrzeit anzeigen..

MfG
  Mit Zitat antworten Zitat
Benutzerbild von Coder1990
Coder1990

Registriert seit: 2. Nov 2007
116 Beiträge
 
Delphi 2005 Personal
 
#6

Re: In Fremdanwendung Informationen anzeigen

  Alt 27. Jul 2008, 10:32
Habe mich jetzt für die einfachste, wie auch wahrscheinlich unschönste Methode entschieden: Ich male den Text mit einem TCanvas auf das entsprechende Windows:

Delphi-Quellcode:
procedure WriteText(TransText: string;x,y:integer);
var
  MyHand: HWND;
  MyDc: HDC;
  MyCanvas: TCanvas;
  Start : Longint;
begin
MyHand := GetForegroundWindow;
MyDc := GetWindowDC(MyHand);
MyCanvas := TCanvas.Create;
MyCanvas.Handle := MyDC;
BeginPath(MyCanvas.Handle);
MyCanvas.Font.Color := clred;
MyCanvas.Font.Name := 'Arial';
MyCanvas.Font.Size := 15;
SetBkMode(MyCanvas.Handle,TRANSPARENT);
EndPath(MyCanvas.Handle);
MyCanvas.TextOut(x,y, TransText);
Start := GetTickCount;
repeat
MyCanvas.TextOut(x, y, TransText);
Application.ProcessMessages
until (GetTickCount - Start > 3000);
InvalidateRect(0,nil, true);
end;
// die Procedure dürfte wohl dem einen oder anderen bekannt sein

Zu meinen Fragen:
1. Bei mir wird der erzeugte Text nach 3 Sekunden nicht gelöscht, habe schon versucht ein Trect einzubauen dass den Text beinhaltet und dieses dann bei "InvalidateRect" einzubauen.. hat auch nicht funktioniert. Was mache ich falsch?
//edit: Funktioniert plötzlich -.-, wäre es nicht besser nur die Position des Textes zu Aktualisieren, weil der komplette Refresh Vorgang is auch bissl unschön

2. Der Benutzer soll bei meinem Programm auswählen auf welcher Bildschirmposition der Text erzeugt werden soll und ich habe Probleme dass Window an dieser Stelle zu finden..

MfG
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#7

Re: In Fremdanwendung Informationen anzeigen

  Alt 27. Jul 2008, 10:51
Zitat:
und ich habe Probleme dass Window an dieser Stelle zu finden..
Was genau meinst du damit?
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von Coder1990
Coder1990

Registriert seit: 2. Nov 2007
116 Beiträge
 
Delphi 2005 Personal
 
#8

Re: In Fremdanwendung Informationen anzeigen

  Alt 27. Jul 2008, 11:13
Also ich möchte 2 Optionen implementieren eine Fensterabhänhige und eine unabhängige (Die Abhänhige kann ich ja mit GetForegroundWindow klären). Nun zur unabhängigen:
Der Benutzer stellt in meinem Programm eine Position für die Anzeige der Information ein z.b. irgendwo oben links.. nun muss ich irgendwie das Fenster, dass gerade dort ist, ermitteln - es muss ja nicht das ForegroundWindow sein..
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#9

Re: In Fremdanwendung Informationen anzeigen

  Alt 27. Jul 2008, 11:15
MSDN-Library durchsuchenWindowFromPoint
Zitat:
The WindowFromPoint function retrieves a handle to the window that contains the specified point.
Thomas
  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 13:28 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