Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Text an Eingabezeile schicken (https://www.delphipraxis.net/34130-text-eingabezeile-schicken.html)

Aike 19. Nov 2004 01:12

Re: Text an Eingabezeile schicken
 
Hm, da passiert nichts.

Ich habe mal den Windows Taschenrechner gestartet und es mit dem ausprobiert - ohne Ergebnis :-/ Es wird zwar ein handle gefunden, aber in der Listbox tut sich nix.

[edit]Bei mir funktioniert das immer korrekt.[/edit]

Dani 19. Nov 2004 01:27

Re: Text an Eingabezeile schicken
 
Liste der Anhänge anzeigen (Anzahl: 1)
Das Projekt im Anhang funktioniert bei mir...

Aike 19. Nov 2004 01:40

Re: Text an Eingabezeile schicken
 
Hm, ja, bei mir auch.

Also mit ...
Delphi-Quellcode:
var
  wlist : TWindowList;
begin
  wlist := TWindowList.Create; // Objekt erzeugen
  try
    wlist.AddClassname := True;  // zusätzlich den Windows-Classname anfügen
    wlist.EnumTopLevelWindows;   // Alle Windows auflisten
    ListBox1.Items.Assign(wlist); // Ergebnis in eine Listbox kopieren
  finally
    wlist.Free;
  end;
end;
Bekomme ich als Ergebnis: The 4th Coming:AppClass ... Rechner:SciCalc
Aber "handle:=FindWindow('AppClass',nil);" liefert wieder nichts :cat:

Jetzt muss ich aber leider in 's Bett. Bin über 's WE nicht da, also nicht wundern. Aber ich hoffe, wir können das Prob Montag wieder bearbeiten ;-)

Dani 19. Nov 2004 11:21

Re: Text an Eingabezeile schicken
 
Wenn du TWindowList aus diesem Code Library Beitrag benutzt, hast du den Handle doch bereits:

Delphi-Quellcode:
function GetD4OHandle: HWND;
var
  wlist : TWindowList;
  idx: Integer;
begin
  Result := 0;
  wlist := TWindowList.Create;
  try
    wlist.AddClassname := True;
    wlist.EnumTopLevelWindows;
    idx := wList.IndexOf('The 4th Coming:AppClass');
    If idx <> -1 then Result := wlist.Handles[idx];
  finally
    wlist.Free;
  end;
end;

Aike 21. Nov 2004 18:55

Re: Text an Eingabezeile schicken
 
So, bin wieder da :witch:

Was ist denn das jetzt für eine Funktion? Ersetzt die die EnumTargetWindow-Funktion? Und wo gibt mir diese Function, wenn überhaupt, das handle für die Eingabezeile zurück?
sry, wenn ich auf 'm Schlauch steh', aber ich steig echt nicht durch :duck:

btw. woher weißt du, dass The 4th Coming das deutsche Die 4te Offenbarung ist? :gruebel:

Dani 21. Nov 2004 21:57

Re: Text an Eingabezeile schicken
 
Zitat:

Zitat von Aike
So, bin wieder da :witch:

Was ist denn das jetzt für eine Funktion? Ersetzt die die EnumTargetWindow-Funktion? Und wo gibt mir diese Function, wenn überhaupt, das handle für die Eingabezeile zurück?
sry, wenn ich auf 'm Schlauch steh', aber ich steig echt nicht durch :duck:

Vergiss die Funktion und TWindowList am besten wieder *g*

"The 4th Coming:AppClass" ist nicht das Fenster, das du suchst, sondern der Taskbar Eintrag. Das gesuchte Fenster hat den Klassennamen "#32770" und den Titel "Die 4. Offenbarung". Daher:

Delphi-Quellcode:
//Findet das erste Edit Control im D4O Fenster und speichert das Handle in einer globalen Variable

var
  D4OEdit: HWND = 0;

...

function EnumWindowCallback(WindowHandle: HWND; lParam1: lParam): Boolean; stdcall;
var sClassName: array[0..255] of Char;
begin
  Result := True;
  FillChar(sClassName[0], 256, 0);
  If GetClassName(WindowHandle, @sClassName, 256) <> 0 then
  If sClassName='Edit' then
  begin
   {Hier kannst du z.B prüfen, ob sich das Edit an einer bestimmten Position im Fenster befindet}
   D4OEdit := WindowHandle;
   Result := false;
  end;
end;

procedure FindD4OEdit;
var
  D4OHandle: HWND;
begin
  D4OHandle := FindWindow('#32770', 'Die 4. Offenbarung');
  If D4OHandle <> 0 then
   begin
    EnumChildWindows(D4OHandle, @EnumWindowCallback, 0));
   end else
    begin
     //D4O läuft nicht
    end;
end;
Zitat:

btw. woher weißt du, dass The 4th Coming das deutsche Die 4te Offenbarung ist?
Google :mrgreen:

Aike 21. Nov 2004 23:28

Re: Text an Eingabezeile schicken
 
*Total perplex*
Jetzt, tja, ähm, ich weiß nich' so genau :?:

Delphi-Quellcode:
begin
  D4OEdit := WindowHandle;
  Result := false;
  showmessage('Result := false');
end;
... gibt immer die msg zurück, wenn das D4O Fenster geöffnet ist. Dazu muss die Eingabezeile gar nicht existieren (sprich: man muss nicht eingelogg sein), aber das wusstest du, denk ich mal :bouncing4:

Jetzt müsste ich das/die handle(s) (alle) in eine Listbox eintragen oder per showmessage() anzeigen können, damit ich das richtige handle herauskriegen und dorthin einen Text schicken kann :coder:

Dani 22. Nov 2004 06:16

Re: Text an Eingabezeile schicken
 
Achso, ich dachte du willst dir einen Loader schreiben, der dich automatisch einlogt :stupid:

Du musst wohl die Koordinaten der Controls mitinander vergeichen, um herauszufinden, ob das richtige dabei ist. (-> MSDN-Library durchsuchenGetWindowRect)

Aike 22. Nov 2004 20:50

Re: Text an Eingabezeile schicken
 
Oh, automatisch einloggen ist auch nicht schlecht *rofl* Danach wurde ich schon gefragt, hab 's aber als nicht möglich abgestempelt :dp: Aber das ist wohl ein anderes Thema (weil umfangreich).

Diese MSDN ist mir schleierhaft.
Zitat:

Parameters
hWnd
[in] Handle to the window.
lpRect
[out] Pointer to a structure that receives the screen coordinates of the upper-left and lower-right corners of the window.
Welches handle soll das denn sein? Das von dem gesamten Programm oder müssen da alle handles aller Komponenten des Programmes rein?
Und dieser "Pointer to a structure" ... :freak:

Dani 22. Nov 2004 21:07

Re: Text an Eingabezeile schicken
 
Zitat:

Zitat von Aike
Diese MSDN ist mir schleierhaft.
Welches handle soll das denn sein?

Das Handle "WindowHandle" in EnumWindowCallback, also das Handle des möglicherweise gesuchten Eingabefeldes :mrgreen:

Zitat:

Und dieser "Pointer to a structure" ... :freak:
Einfach nur ein normales Delphi-Referenz durchsuchenTRect


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:05 Uhr.
Seite 2 von 4     12 34      

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