AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi RichEdit eines anderen Programms kontrollieren
Thema durchsuchen
Ansicht
Themen-Optionen

RichEdit eines anderen Programms kontrollieren

Ein Thema von flow · begonnen am 30. Apr 2003 · letzter Beitrag vom 16. Mai 2003
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von flow
flow

Registriert seit: 25. Apr 2003
61 Beiträge
 
#1

RichEdit eines anderen Programms kontrollieren

  Alt 30. Apr 2003, 11:59
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
die welt ist eine scheibe

...und aus vinyl
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2
  Alt 30. Apr 2003, 12:09
EM_LINESCROLL. wParam: 0, lParam: Die Anzahl der zu scrollenden Zeilen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von flow
flow

Registriert seit: 25. Apr 2003
61 Beiträge
 
#3
  Alt 30. Apr 2003, 12:17
Könntest du das bitte etwas genauer beschreiben !?

Das Problem ist ich habe den Class Name und nicht den Handle! Wie kann ich jetzt den Handle aus dem Class Name ermitteln!?

FLOW
die welt ist eine scheibe

...und aus vinyl
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4
  Alt 30. Apr 2003, 12:36
Also um 12 Uhr hattest du noch das Handle. Was hast du damit gemacht?
SendMessage(REHandle, EM_LINESCROLL, 0, 10); Sollte um 10 Zeilen scrollen.

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);
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von flow
flow

Registriert seit: 25. Apr 2003
61 Beiträge
 
#5
  Alt 30. Apr 2003, 13:01
Ich habe mich verschrieben, tut mir leid!

Ich habe nur den Classname des Fensters und der RichEdit!

Den Handle des Fenster bekomme ich durch
H := findWindow('ThunderRT6FormDC',nil); jedoch sucht FindWindowEx nach einem ChildWindow und gibt mir 0 zurück!

Funktioniert nicht ganz, gibts sonst noch etwas!?

FLOW
die welt ist eine scheibe

...und aus vinyl
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6
  Alt 30. Apr 2003, 13:10
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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von flow
flow

Registriert seit: 25. Apr 2003
61 Beiträge
 
#7
  Alt 30. Apr 2003, 13:39
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:
  H := findWindow('ThunderRT6FormDC',nil);
  H1 := FindWindowEx(H, 0, 'RichTextWndClass', nil);
  SendMessage(H1,EM_LINESCROLL,0,iBKmarks[i]);
FLOW
die welt ist eine scheibe

...und aus vinyl
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8
  Alt 30. Apr 2003, 13:56
Zitat von flow:
Bist du sicher das das geht?
Ziemlich sicher.
Zitat:
Das Programm hat nämlich keine 'Kinder'. Es ist ein Fenster mit einer RichEdit!
Das RichEdit schwebt also ohne Elternfenster so über den Desktop oder wie?

Delphi-Quellcode:
  H := findWindow('ThunderRT6FormDC',nil);
  H1 := FindWindowEx(H, 0, 'RichTextWndClass', nil);
  SendMessage(H1,EM_LINESCROLL,0,iBKmarks[i]);
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.

Ist das Programm nicht mit Delphi programmiert und hat das RichEdit einen eindeutige ID, kannst du an das Handle mit GetDlgItem() rankommen.

FLOW[/quote]
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Alexander

Registriert seit: 28. Aug 2002
Ort: Oldenburg
3.513 Beiträge
 
Turbo Delphi für .NET
 
#9
  Alt 30. Apr 2003, 15:46
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 )
Alexander
  Mit Zitat antworten Zitat
Benutzerbild von flow
flow

Registriert seit: 25. Apr 2003
61 Beiträge
 
#10
  Alt 5. Mai 2003, 09:20
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
die welt ist eine scheibe

...und aus vinyl
  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 19:49 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