AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Text in ein fremdes Fenster an bestimmter Position
Thema durchsuchen
Ansicht
Themen-Optionen

Text in ein fremdes Fenster an bestimmter Position

Ein Thema von simjoh · begonnen am 4. Apr 2007 · letzter Beitrag vom 4. Apr 2007
Antwort Antwort
Seite 1 von 2  1 2      
simjoh

Registriert seit: 13. Nov 2006
Ort: Asslar
99 Beiträge
 
Delphi 7 Enterprise
 
#1

Text in ein fremdes Fenster an bestimmter Position

  Alt 4. Apr 2007, 16:33
Hallo,

ich möchte im geöffneten Fenster eines laufenden Programms einen Text an eine bestimmt Position setzten. Momentan mache ich das so, wobei der Text ('Hallo') in die Caption (warum auch immer gerade dorthin) des Fensters geschrieben wird (in FHWnd ist das Handle des Fensters gespeichert):

Delphi-Quellcode:
function FUNC_SendInput(const s: string):String;
begin
  if FHWnd=0 then
  begin
    Application.MessageBox(PChar('Fehler!'),'');
    exit;
  end;
  SetForegroundWindow(FHWnd);
  
  Sendmessage(fhwnd,WM_SETTEXT,0,Integer(PChar(s)));

end;

procedure TForm.Button1Click(Sender: TObject);
begin
  FUNC_SendInput('Hallo');
end;
Das funzt auch so, 'Hallo' erscheint im Fenster. Ich will es aber nicht in die Caption schreiben, sondern am liebsten per Koordinaten an eine bestimmt Stelle.
Kann mir jemand helfen?

Nette Grüße
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

Re: Text in ein fremdes Fenster an bestimmter Position

  Alt 4. Apr 2007, 17:11
Hi,

Also mit WM_SETTEXT kannst du nur den Text/Caption von Objekten mit Handle ändern. Was du machen könntest, ist das ganze mit Canvas zu "malen". Das Problem ist jedoch das das ganze einfach wieder übermalt wird bei der nächsten WM_PAINT Message an das Objekt...

So würde man das dann ungefähr machen:

Delphi-Quellcode:
var C: TCanvas;
begin
  C:= TCanvas.Create;
  C.Handle := GetDC(FHwnd);
  C.TextOut(x,y,Text);
  C.Free;
end;
Gruß
Neutral General
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
simjoh

Registriert seit: 13. Nov 2006
Ort: Asslar
99 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Text in ein fremdes Fenster an bestimmter Position

  Alt 4. Apr 2007, 17:33
Hallo,

danke sehr, das funzt so. Du hast aber natürlich recht, dass mein Text immer wieder überschrieben wird. Fällt da jemand noch ne andere Lösung ein oder kann man die genannte irgendwie ausbauen?

Grüße
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#4

Re: Text in ein fremdes Fenster an bestimmter Position

  Alt 4. Apr 2007, 17:45
Immer daran denken: sämliche Manipulation über Fensterhandles (zwwichen 2 versch. Anwendungen)
werden unter Windows Vista nicht mehr funktionieren!
SendMessage wird zwar ausgeführt, kommt aber bei der fremden Anwendung nicht an.
Andreas
  Mit Zitat antworten Zitat
simjoh

Registriert seit: 13. Nov 2006
Ort: Asslar
99 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Text in ein fremdes Fenster an bestimmter Position

  Alt 4. Apr 2007, 17:56
Du meinst damit, Canvas ist die optimale Lösung?
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

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

Re: Text in ein fremdes Fenster an bestimmter Position

  Alt 4. Apr 2007, 17:59
Zitat von shmia:
Immer daran denken: sämliche Manipulation über Fensterhandles (zwwichen 2 versch. Anwendungen)
werden unter Windows Vista nicht mehr funktionieren!
SendMessage wird zwar ausgeführt, kommt aber bei der fremden Anwendung nicht an.
Hallo shima,

Kommt es nicht auch darauf an, was für ein UI privilege die Anwendung hat?
Siehe Webseiten-Titel"User Interface Privilege Isolation (UIPI)"

Zitat:
More specifically, applications in lower privilege modes cannot generally send messages to higher privileged applications unless the higher privileged application explicitly allows that message by calling ChangeWindowMessageFilter(). Similarly, lower privileged applications can read but cannot modify an HWND owned by higher privileged applications. For compatibility reasons, SendMessage and other APIs will return success even if the API was blocked because of privilege issues. Similarly, where compatibility impact is high and security risk is low sometimes low-privileged applications are allowed to send unsolicited messages to high privileged applications.
Thomas
  Mit Zitat antworten Zitat
simjoh

Registriert seit: 13. Nov 2006
Ort: Asslar
99 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Text in ein fremdes Fenster an bestimmter Position

  Alt 4. Apr 2007, 18:26
Hat jemand noch ne Idee?
  Mit Zitat antworten Zitat
LizardKaiser

Registriert seit: 18. Feb 2007
Ort: Kassel
25 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Text in ein fremdes Fenster an bestimmter Position

  Alt 4. Apr 2007, 18:36
Timer + Zeichenoperation?
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Text in ein fremdes Fenster an bestimmter Position

  Alt 4. Apr 2007, 18:43
Hi,

es ist zwar nicht optimal aber eine andere Variante, mit dem TStaticText kann man ja auch Text anzeigen, du setzt ihn auf das fremde Fenster.

Windows.SetParent(Statictext1.Handle, FHWnd);
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
simjoh

Registriert seit: 13. Nov 2006
Ort: Asslar
99 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: Text in ein fremdes Fenster an bestimmter Position

  Alt 4. Apr 2007, 20:48
Ja, Timer + Zeichnen geht auch, hab ich auch schon probiert, da flackerts aber so.

Zu dem anderen Vorschlag: Kannste nochmal was genauer erklären wie das geht?

Danke an alle.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 01:42 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