Einzelnen Beitrag anzeigen

Benutzerbild von Coder1990
Coder1990

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

Re: In Fremdanwendung Informationen anzeigen

  Alt 27. Jul 2008, 11: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