AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

anderes program auslesen

Ein Thema von napstar · begonnen am 2. Apr 2007 · letzter Beitrag vom 13. Mai 2007
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von napstar
napstar

Registriert seit: 22. Mär 2007
Ort: München
133 Beiträge
 
Delphi 2007 Architect
 
#1

anderes program auslesen

  Alt 2. Apr 2007, 21:30
hi.. hab mal ne frage..
ist es möglich den inhalt von einer messagebox von anderen programmen in ein memo anzuzeigen..
ich wollte eigendlich den inhalt von einem MSN Chatfenster in ein Memo anzeigen ^^.
hab im internet leider nix gefunden...
kann aber auch an meiner suchweise liegen ..
ich hoffe ihr könnt mir helfen und bedanke mich jetzt schon.
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: anderes program auslesen

  Alt 2. Apr 2007, 21:40
Dies ist durchaus möglich. Muss aber nicht sein.

Zuerst solltest du mal mit Winspector (oder spy++) dir die "Zusammensetzung" deines Chat-Fensters ansehen.
Es könnte sich letztenendes um den Befehl LVM_GetItemText oder ähnliches handeln.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

Re: anderes program auslesen

  Alt 2. Apr 2007, 21:51
Wenn es nur eine MessageBox ist:
Delphi-Quellcode:
function GetMessageBoxTextByCaption(const Caption: String): String;
const
  ID_STATIC = $0000FFFF;
var
  hMsgBox: THandle;
  len: Integer;
  Buffer: PChar;
begin
  hMsgBox := FindWindow(nil, PChar(Caption));
  if hMsgBox <> 0 then
  begin
    len := SendMessage(GetDlgItem(hMsgBox, ID_STATIC), WM_GETTEXTLENGTH, 0, 0);
    if len > 0 then
    begin
      GetMem(Buffer, len + 1);
      try
        GetDlgItemText(hMsgBox, ID_STATIC, Buffer, len + 1);
        SetString(Result, Buffer, len + 1);
      finally
        FreeMem(Buffer);
      end;
    end;
  end;
end;
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Timi-loader

Registriert seit: 10. Okt 2005
Ort: Berlin
97 Beiträge
 
Delphi 7 Personal
 
#4

Re: anderes program auslesen

  Alt 11. Mai 2007, 21:12
wie kann ich nun das konkret auslesen? also es ist wies aussieht ja keine einfache listbox.

Winspector meint es ist: DirectUIHWND (also der classname)
und es liegt noch in dem andern fenster drinnen, falls das was ausmachane sollte. handle des äußeren fensters kann ich auch bekommen das ist nicht das prob.

mfg
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: anderes program auslesen

  Alt 11. Mai 2007, 21:17
Wenn du das Handle des äußeren Fensters hast, wieso nimmst du nicht findWindowex, um das gesuchte Fenster zu finden? Dann brauchst du nur noch ein WM_GETTEXT zu schicken und du bist fertig.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Benutzerbild von ghost007
ghost007

Registriert seit: 31. Okt 2005
Ort: München
1.024 Beiträge
 
Delphi 7 Personal
 
#6

Re: anderes program auslesen

  Alt 11. Mai 2007, 21:57
hey,
hab mich mit dem thema auch schon des öfteren rumgeschlagen, aber irgendwie bin ich nie durchgestiegen wie ich jetzt wirklich anhand des handles des hauptfensters, inhalte von komponenten des fensters auslesen kann. gibt es da vielleicht ein anschauliches tutorial?

MfG - Ghost007
Christian
Es gibt möglich Dinge und unmöglich Dinge.
Für unmögliche braucht man lediglich etwas länger.
  Mit Zitat antworten Zitat
Timi-loader

Registriert seit: 10. Okt 2005
Ort: Berlin
97 Beiträge
 
Delphi 7 Personal
 
#7

Re: anderes program auslesen

  Alt 11. Mai 2007, 22:32
so ich hab mal nach dem rat von Apollonius folgendes erstellt:
Delphi-Quellcode:
var h: HWND;
   text,classname:String;
begin

h:=GetForegroundWindow;

SetLength(text,SendMessage(h,WM_GETTEXTLENGTH,0,0)+1);
SendMessage(h,WM_GETTEXT,length(text),Integer(@text[1]));

SetLength(ClassName, 255);
      //get the class name and reset the
      //memory area to the size of the name
      SetLength(ClassName,
              GetClassName(h,
                           PChar(className),
                           Length(className)));


edit1.Text:=classname;
edit2.Text:=text;

h := FindWindowEx(h, 0, 'DirectUIHWND', nil);

SetLength(text,SendMessage(h,WM_GETTEXTLENGTH,0,0)+1);
SendMessage(h,WM_GETTEXT,length(text),Integer(@text[1]));

SetLength(ClassName, 255);
      //get the class name and reset the
      //memory area to the size of the name
      SetLength(ClassName,
              GetClassName(h,
                           PChar(className),
                           Length(className)));

edit3.Text:=classname;
edit4.Text:=text;
memo1.Text:=text;
end;
das wird per timer aufgerufen und dann sieht man immer das aktuelle fenster. (da ich genau das ja auchnur später brauch)

aber beim DirectUIHWND gibt es keine ausgabe bei text. nix zu sehen..
kann man noch anders den inhalt ermitteln?

mfg

p.s.: also mit dem notepad und dann dort drinn editor(also anstatt directuihwnd) klappt das. da bekommt man eine ausgabe.
  Mit Zitat antworten Zitat
Benutzerbild von ghost007
ghost007

Registriert seit: 31. Okt 2005
Ort: München
1.024 Beiträge
 
Delphi 7 Personal
 
#8

Re: anderes program auslesen

  Alt 12. Mai 2007, 02:18
der code is genial ^^, vorallem ich versteh nen sogar danke
Bei deinem problem kann ich dir leider nich weiterhelfen

MfG - Ghost007

P.S.: guade nacht
Christian
Es gibt möglich Dinge und unmöglich Dinge.
Für unmögliche braucht man lediglich etwas länger.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#9

Re: anderes program auslesen

  Alt 12. Mai 2007, 02:56
Wird das Fenster denn gefunden?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Timi-loader

Registriert seit: 10. Okt 2005
Ort: Berlin
97 Beiträge
 
Delphi 7 Personal
 
#10

Re: anderes program auslesen

  Alt 12. Mai 2007, 07:42
gutn morgen.

jo fenster wird gefunden. also handle ist beidemale <> 0 (wenn ich msn aktiv habe)

mfg

EDIT: mir kam die idee, dass vllt ja auch einfach mehrere der selben komponente drinnen sind. vllt ist ja die die ich dann grad bekomme leer. wie kann ich eine schleife baun die alle inneren komponenten (alle oder einer art) durchgeht? (also z.b. ne fensterschleife ging ja mit h := getnextwindow(h, GW_HWNDNEXT); )

EDIT2: ich hab mal probiert ein listview meines andern eigenen programmes auszulesen. bekomme ich auch nicht hin. gibt es nicht noch nen andern befehl? statt WM_GETTEXT wäre sowas gut WM_GETRAWDATAB*g*
  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 17:35 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