![]() |
RichEdit eines anderen Programms kontrollieren
Ich habe ein Programm das soll ein anderes 'bedienen'!
Das zu 'bedienende' Programm hat ein RichEdit und ich habe den Handle davon. Es wurde in Visual Basic geschrieben aber ich habe den Source Code nicht! Ich will jetzt mit meinem Programm die RichEdit des anderen durchscrollen und in einer bestimmten Zeile stehenbleiben. Bis jetzt mache ich es so das ich den Handle des anderen Programms nehme und an dieses Programm KeyEvents sende. Immer einen KeyDown damit der Cursor immer eine Zeile weiter runter springt. Es geht auch irgendwie das ich der RichEdit sage das der Cursor in die Zeile 25 springen soll nur weiß ich nicht ganz wie! Kann mir bitte jemand helfen!? FLOW |
EM_LINESCROLL. wParam: 0, lParam: Die Anzahl der zu scrollenden Zeilen.
|
Könntest du das bitte etwas genauer beschreiben :roll: !?
Das Problem ist ich habe den Class Name und nicht den Handle! Wie kann ich jetzt den Handle aus dem Class Name ermitteln!? FLOW |
Also um 12 Uhr hattest du noch das Handle. :roll: Was hast du damit gemacht?
Delphi-Quellcode:
Sollte um 10 Zeilen scrollen.
SendMessage(REHandle, EM_LINESCROLL, 0, 10);
Oder Moment? Hast du nur das Handle des fensters oder wie?
Delphi-Quellcode:
var
hWnd, REHandle : cardinal; begin hWnd := FindWindow(nil, 'Fenstertext'); // Handle des Hauptfensters REHandle := FindWindowEx(hWnd, 0, 'REClass', nil); SendMessage(REHandle, EM_LINESCROLL, 0, 10); |
Ich habe mich verschrieben, tut mir leid!
Ich habe nur den Classname des Fensters und der RichEdit! Den Handle des Fenster bekomme ich durch
Delphi-Quellcode:
jedoch sucht FindWindowEx nach einem ChildWindow und gibt mir 0 zurück!
H := findWindow('ThunderRT6FormDC',nil);
Funktioniert nicht ganz, gibts sonst noch etwas!? FLOW |
Genau FindWindowEx sucht nach dem Kindfenster, denn das ist ja dein RichEdit. Und wenn du da den richtigen Klassennamen angibst, solltest du auch ein gültiges Handle bekommen.
|
Bist du sicher das das geht?
Das Programm hat nämlich keine 'Kinder'. Es ist ein Fenster mit einer RichEdit! Der ClassName ist RichTextWndClass und das der Code:
Delphi-Quellcode:
FLOW
H := findWindow('ThunderRT6FormDC',nil);
H1 := FindWindowEx(H, 0, 'RichTextWndClass', nil); SendMessage(H1,EM_LINESCROLL,0,iBKmarks[i]); |
Zitat:
Zitat:
Delphi-Quellcode:
Mit dem Code widersprichst du dir doch selber. Das Elternfenster hat den Klassennamen ThunderRT6FormDC und das Kindfenster (das RichEdit) den Klassennamen RichTextWndClass. Aber liegt das RichEdit eventuell noch auf einem Panel oder so? Dann kommst du mit FindWindowEx nicht so einfach dran.
H := findWindow('ThunderRT6FormDC',nil);
H1 := FindWindowEx(H, 0, 'RichTextWndClass', nil); SendMessage(H1,EM_LINESCROLL,0,iBKmarks[i]); Ist das Programm nicht mit Delphi programmiert und hat das RichEdit einen eindeutige ID, kannst du an das Handle mit GetDlgItem() rankommen. FLOW[/quote] |
Jedes Element auf so einer Form ist ein Fenster und somit abhängig des Elternfensters. Deswegen sollte es damit funktionieren.
Kuck dir mal Luckies Tutorials an, sind wirklich gut (Lob an dich Luckie ;-)) |
Erklär mir das bitte genauer. Es ist schon möglich das die RichEdit noch auf einem Panel liegt, jedoch wurde das Programm in Visual Basic geschrieben.
Wie funktioniert das mit GetDlgItem()? FLOW |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:17 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-2025 by Thomas Breitkreuz