AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Memo in anderem Programm auslesen
Thema durchsuchen
Ansicht
Themen-Optionen

Memo in anderem Programm auslesen

Ein Thema von Mirco · begonnen am 19. Jun 2006 · letzter Beitrag vom 22. Jun 2006
Antwort Antwort
Mirco

Registriert seit: 7. Mai 2006
71 Beiträge
 
#1

Memo in anderem Programm auslesen

  Alt 19. Jun 2006, 14:55
Hallo
wie kann ich ein Memo in einem anderem Programm auslesen.
Das HAndle verändert sich ja immer wenn das Programm neu startet.
Viele Grüsse
Mirco
Mirco Hallenga
  Mit Zitat antworten Zitat
droppi
(Gast)

n/a Beiträge
 
#2

Re: Memo in anderem Programm auslesen

  Alt 19. Jun 2006, 15:24
Also wegen dem mit dem Handle würd ich mir mal Findwindow() angucken. Wegen dem Memo auslesen müsstest du irgendwas mit Messages machen.
  Mit Zitat antworten Zitat
Mirco

Registriert seit: 7. Mai 2006
71 Beiträge
 
#3

Re: Memo in anderem Programm auslesen

  Alt 19. Jun 2006, 15:50
Hallo
Ich hab mal beim Internet Explorer folgendes gemacht um mich automatisch bei einem HTAcess Fenster einzuloggen:
Der Quelltext ist nicht von mir.
Delphi-Quellcode:
function TForm1.feld: boolean;
var
  ShellWindow: IShellWindows;
  WB: IWebbrowser2;
  spDisp: IDispatch;
  IDoc1: IHTMLDocument2;
  Document: Variant;
  k, m: Integer;
  ovElements: OleVariant;
  i: Integer;
begin
  result := false; //assume no go

  ShellWindow := CoShellWindows.Create;
  // get the running instance of Internet Explorer
  for k := 0 to ShellWindow.Count do
  begin
    spDisp := ShellWindow.Item(k);
    if spDisp = nil then Continue;
    // QueryInterface determines if an interface can be used with an object
    spDisp.QueryInterface(iWebBrowser2, WB);
    if WB <> nil then
    begin try

        WB.Document.QueryInterface(IHTMLDocument2, iDoc1);
      except
      end;
      if iDoc1 <> nil then
      begin
        WB := ShellWindow.Item(k) as IWebbrowser2;
        begin
          Document := WB.Document;
          // count forms on document and iterate through its forms
          for m := 0 to Document.forms.Length - 1 do
          begin
            ovElements := Document.forms.Item(m).elements;
            // iterate through elements
            for i := 0 to ovElements.Length - 1 do
            begin
              // when input fieldname is found, try to fill out
              try
                if (CompareText(ovElements.item(i).tagName, 'INPUT') = 0) and
                  (CompareText(ovElements.item(i).type, 'text') = 0) then
                begin
                  ovElements.item(i).Value := 'username';
                end;
              except
              end;
                try
                if (CompareText(ovElements.item(i).tagName, 'INPUT') = 0) and
                  (CompareText(ovElements.item(i).type, 'SUBMIT') = 0) and
                  (ovElements.item(i).Value = 'weiter') then // Suchen für German
                begin
                  ovElements.item(i).Click;
                  result := true; // we're a go!

                end;
              except
              end;
            end;
          end;
        end;
      end;
    end;
  end;
end;
Die Anordnung meines Fensters in der anderen Anwendung sieht so aus:
Delphi-Quellcode:
786638: TDataForm "Data"
  786640: TPanel "Panel1"
    721098: TPanel
      983250: TMemo "TExt"
Ich bekomm den Quelltext oben nicht angepasst.
Grüsse
Mirco
Mirco Hallenga
  Mit Zitat antworten Zitat
Mirco

Registriert seit: 7. Mai 2006
71 Beiträge
 
#4

Re: Memo in anderem Programm auslesen

  Alt 20. Jun 2006, 12:40
Ist das sehr kompliziert?

Viele Grüsse
Mirco
Mirco Hallenga
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: Memo in anderem Programm auslesen

  Alt 20. Jun 2006, 15:11
Der IE hat überhauptnichts mit anderen Windows Anwendungen zu tun.

Stichworte für die Forensuche: Hier im Forum suchenFindWindow, Hier im Forum suchenFindWindowEx, Hier im Forum suchenEnumWindows, Hier im Forum suchenEnumChildWindows, Hier im Forum suchenWM_SETTEXT, Hier im Forum suchenWM_GETTEXT, Hier im Forum suchenWM_GETTEXTLENGTH.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Mirco

Registriert seit: 7. Mai 2006
71 Beiträge
 
#6

Re: Memo in anderem Programm auslesen

  Alt 21. Jun 2006, 12:32
Danke Luckie,
ich schau mir das alles mal an.
Viele Grüsse Mirco
Mirco Hallenga
  Mit Zitat antworten Zitat
Mirco

Registriert seit: 7. Mai 2006
71 Beiträge
 
#7

Re: Memo in anderem Programm auslesen

  Alt 21. Jun 2006, 13:28
Hallo,
ich habe folgendes Beispiel gefunden.
Das klappt zum Beispiel ganz gut mit Notepad, aber nicht mit meinem Programm.
Das Memo was ich auslesen will liegt in dem Programm auf einer zweiten Form.
Kann es sein das es deswegen nicht funktioniert?


Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
  function EnumWindowsProc(Wnd: HWND; lParam: LPARAM): BOOL; stdcall;
  var
    ClassName: string;
    EditHWnd: HWND;
  begin
    SetLength(ClassName, 512);
    SetLength(ClassName, GetClassName(Wnd, PChar(ClassName), Length(ClassName)));
    if ClassName = 'Notepadthen
    begin
      EditHWnd := FindWindowEx(Wnd, 0, 'Edit', nil);
      if IsWindow(EditHWnd) then
        TList(lParam).Add(Pointer(EditHWnd));
    end;
  end;

var
  List: TList;
  I: Integer;
  S: string;
begin

  List := TList.Create;
  try
    EnumWindows(@EnumWindowsProc, LPARAM(List));
    for I := 0 to List.Count - 1 do
    begin
      SetLength(S, SendMessage(HWND(List.Items[I]), WM_GETTEXTLENGTH, 0, 0) + 1);
      if Length(S) > 1 then
      begin

        SetLength(S, SendMessage(HWND(List.Items[I]), WM_GETTEXT, Length(S), LPARAM(PChar(S))));
        Showmessage(S);
       // S := StringReplace(S, '111', 'Neuer Text', [rfReplaceAll]);
       // SendMessage(HWND(List.Items[I]), WM_SETTEXT, Length(S), LPARAM(PChar(S)));
      end;
    end;
  finally
    List.Free;
  end;
end;
Kann mir das bitte mal jemand erklären?
Viele Grüsse
Mirco
Mirco Hallenga
  Mit Zitat antworten Zitat
Mirco

Registriert seit: 7. Mai 2006
71 Beiträge
 
#8

Re: Memo in anderem Programm auslesen

  Alt 22. Jun 2006, 18:24
*PUSH*
soooo...nun darf ich aber mal
Mirco Hallenga
  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 12:06 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