AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Text in einem "fremden" Fenster markieren
Thema durchsuchen
Ansicht
Themen-Optionen

Text in einem "fremden" Fenster markieren

Ein Thema von golisan · begonnen am 1. Aug 2007 · letzter Beitrag vom 1. Aug 2007
Antwort Antwort
golisan

Registriert seit: 17. Jan 2007
43 Beiträge
 
Delphi 2007 Professional
 
#1

Text in einem "fremden" Fenster markieren

  Alt 1. Aug 2007, 15:49
Hallo Leute,

ich möchte von meinem Programm aus, einen Text in einem anderen Fenster markieren.
Hört sich ja erst mal einfach an ...
Das "andere" Fenster ist ein Child einer MDI-Anwendung. Das Fenster-Handle habe ich, auch kann ich das Fenster per
ShowWindow(wnd,SW_MAXIMIZE) maximieren. Aber wie komme ich an den Text im Editor und wie kann ich Texte markieren?

Die Hierarchie der Fenster ist:
NIDEWindowClass
->MDIClient
-->PgmEdtMDIWin (mit dem Handle kann man minimieren, maximieren etc.)
--->PgMEdtEditGroup
---->PgmEdtEditWin (hier steht der Text drin)
---->ScrollBar(hor.)
---->ScrollBar(vert.)

Habt ihr eine Idee oder ist das ganze zum Scheitern verurteilt?
Danke!
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

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

Re: Text in einem "fremden" Fenster markieren

  Alt 1. Aug 2007, 17:03
Hallo,

Mit dem Tool Componentfinder von SirT kannst du dir gleich den Quelltext genieren lassen. Du kannst ja mal versuchen, ob
Delphi-Quellcode:
var
  SelStart, SelEnd : Integer;
begin
  SelStart:= ...;
  SelEnd:= ...;
  SendMessage((*HWND*), EM_SETSEL, SelStart, SelEnd);
was bingt.
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
golisan

Registriert seit: 17. Jan 2007
43 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Text in einem "fremden" Fenster markieren

  Alt 1. Aug 2007, 22:43
Hi bitsetter,

das tut leider nicht, da das Fenster kein edit enthält.
Das andere Fenster(es ist ein Editor einer anderen Programmiersprache), hat auch eine Suchenfunktion, die mit STRG-F aufgerufen werden kann. Habe es auch schon geschafft mit
Delphi-Quellcode:
Keybd_Event(vk_control,0,0,0);
Keybd_Event(VkKeyScan('f'),0,0,0);
Keybd_Event(VkKeyScan('f'),0,KEYEVENTF_KEYUP,0);
Keybd_Event(vk_control,0,KEYEVENTF_KEYUP,0);
den Suchen-Dialog von meinem Programm aus aufzurufen.
Das hilft zwar nicht unbedingt, da ich eigentlich nicht will, daß man diesen Dialog sieht, aber als ich mit Winspector geschaut habe, was da pasiert, habe ich gesehen, daß dieser Suchen-Dialog von der Klasse #32770 abstammt. Also ein Standard-Win-API.
Jetzt hatte ich gleich zwei Ideen auf einmal
1. kann ich nicht einfach einen TFindDialog erzeugen und ihm als Owner das Handle des Editors geben?
Das Problem dabei ist, dass der create ein TComponent verlangt ich aber "nur" ein HWND habe. Kann
man das irgendwie "konvertieren"?(TComponent(hwnd) geht nicht). Oder geht TFindDialog nur mit (Rich)Edits?
2. falls das mit dem TFindDialog nicht geht, kann ich mit CreateWindow mir so einen Such-Dialog
"erschaffen"
sowas wie
CreateWindow(Ex)(WS_EX_TOPMOST??,'#32770','Find',WS_OVERLAPPED??,100,100,200,200,hwnd,null,0,0); (wobei ich hier nicht richtig weiß, wie ich die Parameter bestücken soll)
und wie schicke ich dann meine Suche los.
Da der Editor den Standard(#32770)-Dialog verwendet, muss er auch eine entsprechende Schnittstelle besitzen um mit dem #32770 kommunizieren zu können.
Uff .. viel geschrieben ... aber mir raucht schon das Hirn ...
Merci
  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 18:32 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