![]() |
Memo in anderem Programm auslesen
Hallo :-D
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 |
Re: Memo in anderem Programm auslesen
Also wegen dem mit dem Handle würd ich mir mal Findwindow() angucken. Wegen dem Memo auslesen müsstest du irgendwas mit Messages machen.
|
Re: Memo in anderem Programm auslesen
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:
Die Anordnung meines Fensters in der anderen Anwendung sieht so aus:
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;
Delphi-Quellcode:
Ich bekomm den Quelltext oben nicht angepasst.
786638: TDataForm "Data"
786640: TPanel "Panel1" 721098: TPanel 983250: TMemo "TExt" Grüsse Mirco |
Re: Memo in anderem Programm auslesen
Ist das sehr kompliziert?
Viele Grüsse Mirco |
Re: Memo in anderem Programm auslesen
Der IE hat überhauptnichts mit anderen Windows Anwendungen zu tun.
Stichworte für die Forensuche: ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Re: Memo in anderem Programm auslesen
Danke Luckie,
ich schau mir das alles mal an. Viele Grüsse Mirco |
Re: Memo in anderem Programm auslesen
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:
Kann mir das bitte mal jemand erklären?
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 = 'Notepad' then 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; Viele Grüsse Mirco |
Re: Memo in anderem Programm auslesen
*PUSH*
soooo...nun darf ich aber mal :) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:45 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