AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Texte aus laufendem Fremd-Programm kopieren
Thema durchsuchen
Ansicht
Themen-Optionen

Texte aus laufendem Fremd-Programm kopieren

Ein Thema von eddy · begonnen am 23. Sep 2003 · letzter Beitrag vom 25. Sep 2003
Antwort Antwort
Benutzerbild von eddy
eddy

Registriert seit: 4. Jan 2003
Ort: Sachsen
573 Beiträge
 
Delphi 5 Professional
 
#1

Texte aus laufendem Fremd-Programm kopieren

  Alt 23. Sep 2003, 23:10
Hallo Leute,

ich möchte mir eine anspruchslose sich immer mal wiederholende Tätigkeit mit einem Mausclick erleichtern. Aus einer über das Internet anwählbaren Daten-Verwaltung (Fremd-Anwendung), die nicht mit TWebBrowser geöffnet werden kann, stehen in einem Memofeld Daten, die ich mit der Maus markiere, mit Ctrl-C kopiere und, nach einem Wechsel in mein Programm, mit Ctrl-V in ein Memofeld einfüge und weiter bearbeite.

Mit
Code:
procedure TFKasse.SpeedButton11Click(Sender: TObject);
var
   hdl, svhdl : DWORD;
begin
  s := 'Order Datenquelle';
  hdl := findwindow(nil,pchar(s));
  svhdl := GetForeGroundWindow;
  BringWindowToTop(hdl);
  SetActiveWindow(hdl);
  sleep(2000);
  BringWindowToTop(svhdl);
end;
kann ich in das entsprechende Fenster wechseln, bekomme es angezeigt und gelange in meine Anwendung zurück.

Anstatt "sleep" benötige ich jetzt noch eine Funktion, die mir das Markieren und Kopieren eines bestimmten Inhaltes aus 'Order Datenquelle' erlaubt in der Art wie mit TWebBrowser:
Code:
    WebBrowser1.ExecWB(OLECMDID_SELECTALL, OLECMDEXECOPT_PROMPTUSER);
    WebBrowser1.ExecWB(OLECMDID_COPY, OLECMDEXECOPT_PROMPTUSER);
mfg
eddy
  Mit Zitat antworten Zitat
Ganymed

Registriert seit: 11. Jun 2003
Ort: Hameln
56 Beiträge
 
Delphi 7 Architect
 
#2

Re: Texte aus laufendem Fremd-Programm kopieren

  Alt 24. Sep 2003, 11:57
Ein Gedankengang:

Versuch, ein Handle aud das Memo-Feld zu bekommen.
Selektier den Text des Memo-Feldes (z.B. Message senden, um den Inhalt zu selektieren. Mit WM_KEYDOWN und [strg]+[a] müsste es möglich sein, den gesamten Inhalt des Memos auszuwählen.)

Dann die Message WM_COPY an das Memo schicken und schon hast du's in der Zwischenablage.

Das Problem dürfte sein, ein Handle auf das Memo-Feld zu bekommen...
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Texte aus laufendem Fremd-Programm kopieren

  Alt 24. Sep 2003, 12:14
Versuche ein Handle auf das Memo zu bekommen.
Danach mit Getwindowtext den Text von dort holen und dann
weiterverarbeiten...

Hab das ganze mal mit folgendem Beispiel probiert, sollte aber auch über anwendungen hinweg funktionieren brauchst ja nur statt memo1.handle das handle des memos aus dem anderen Fenster einsetzen.

Delphi-Quellcode:

[...]
var inhalt: Array[0..255] of Char;
begin
 GetWindowText(Memo1.handle, Inhalt, 255);
 Memo2.Text := String(Inhalt);
end;
Wenns probleme beim Handle holen gibt kannste das Programm wo das abzufragende Memo drin ist ja mal hergeben...
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Texte aus laufendem Fremd-Programm kopieren

  Alt 24. Sep 2003, 12:58
Das geht so nicht
GetWindowText funktioniert nur innerhalb des eigenen Prozesses. Du brauchst Hier im Forum suchenWM_GETTEXT.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Texte aus laufendem Fremd-Programm kopieren

  Alt 24. Sep 2003, 13:35
Ist mir bisher noch gar nicht aufgefallen das es bei anderen prozessen nicht geht da bei Fenstern und so der Titel zurückgegeben wird. Dachte die "Texteigenschaft" enhält einfach keinen wert... My Horizont wurde erweitert *lol*.. Aber auf jeden Fall sollte mit text holen anhand des handles funktionieren...
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von eddy
eddy

Registriert seit: 4. Jan 2003
Ort: Sachsen
573 Beiträge
 
Delphi 5 Professional
 
#6

Re: Texte aus laufendem Fremd-Programm kopieren

  Alt 25. Sep 2003, 00:40
Hallo Leute,

ich hab' mir die Beispiele angesehen. Leider habe ich kein Handle auf das Memo, ich besitze lediglich das Handle auf die Anwendung.

Wie erhalte ich Informationen zu den Komponenten, die Bestandteil der durch das Handle (hdl) bezeichneten Fremdanwendung sind?

mfg
eddy
  Mit Zitat antworten Zitat
Benutzerbild von APP
APP

Registriert seit: 24. Feb 2003
Ort: Graz (A)
705 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Texte aus laufendem Fremd-Programm kopieren

  Alt 25. Sep 2003, 06:44
Hallo,
suche mal nach "EnumChildWindows" hier im Forum, und im Speziellen
Christians Antwort:
http://www.delphipraxis.net/internal...umchildwindows
Armin P. Pressler

BEGIN
...real programmers are using C/C++ - smart developers Delphi;
END;
  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 02:22 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