![]() |
Text in einem "fremden" Fenster markieren
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? :coder2: Danke! |
Re: Text in einem "fremden" Fenster markieren
Hallo,
Mit dem Tool ![]()
Delphi-Quellcode:
was bingt.
var
SelStart, SelEnd : Integer; begin SelStart:= ...; SelEnd:= ...; SendMessage((*HWND*), EM_SETSEL, SelStart, SelEnd); |
Re: Text in einem "fremden" Fenster markieren
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:
den Suchen-Dialog von meinem Programm aus aufzurufen.
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); 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 :roteyes: 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
Delphi-Quellcode:
(wobei ich hier nicht richtig weiß, wie ich die Parameter bestücken soll)
CreateWindow(Ex)(WS_EX_TOPMOST??,'#32770','Find',WS_OVERLAPPED??,100,100,200,200,hwnd,null,0,0);
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 ... :wall: Merci |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:31 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz