Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi invisible TEdit mit FindWindowEx finden (https://www.delphipraxis.net/25836-invisible-tedit-mit-findwindowex-finden.html)

IceOnly 13. Jul 2004 13:56


invisible TEdit mit FindWindowEx finden
 
hallo community,
ich brauche mal hilfe in bezug auf FindWindowEx.
erst mal mein code:

Delphi-Quellcode:
ItemHandle:=FindWindowEx(FindWindow(nil,Main_ID),0,'TEdit',nil);
if ParamCount>0
then SentText:=ParamStr(1)
else SentText:='Show';
if ItemHandle<>0
then SendMessage(ItemHandle,WM_SETTEXT,Length(SentText),lParam(SentText))
else ShowMessage('TEdit konnte nicht gefunden werden !');
Main_ID ist ein const String = Name des Fesnters...
wenn ich jetzt das TEdit auf visible:=true setze, funzt es auch wunderbar...aber wenn ich es auf false setze, wird das TEdit nicht mehr gefunden. Gibt es da irgendeine lösung, dieses TEdit trotzdem (selbst wenn es unsichtbar ist) anzusprechen?

thx 4 help

Christian Seehase 13. Jul 2004 16:00

Re: invisible TEdit mit FindWindowEx finden
 
Moin IceOnly,

erst einmal herzlich Willkommen hier in der Delphi-PRAXiS.

Ich kann das Problem nicht nachvollziehen.
Weder in D5 Pro, D6 PE noch D7 PE.

Funktioniert einwandfrei.

Vielleicht teilst Du Dir die Schachtelung von FindWindowEx und FindWindow auf, damit Du mal feststellen kannst, ob evtl. schon FindWindow fehlschlägt.

Dann kannst Du Dir noch mit

Delphi-Quellcode:
ShowMessage(SysErrorMessage(GetLastError));
nähere Informationen zurückliefern lassen, was Ursache ist.

IceOnly 13. Jul 2004 19:34

Re: invisible TEdit mit FindWindowEx finden
 
danke für den versuch mir zu helfen, aber bisher haben deine tipps bei mir (delphi 7 pro) nicht viel weitergeholfen ;_; ich stelle deshalb einfach mal meinen "ganzen" code zur verfügung (auch wenns nicht wirklich was bringt):

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var ItemHandle,MainApp:HWND; SentText: String;
begin
  if FindWindow(nil,Main_ID)=0 then begin
  // bla bla bla
  end else begin
  Application.ShowMainForm:=false;
  MainApp:=FindWindow(nil,Main_ID);
  ItemHandle:=FindWindowEx(MainApp,0,'TEdit',nil);
  if ParamCount>0
  then SentText:=ParamStr(1)
  else SentText:='Show';
  if ItemHandle<>0
  then SendMessage(ItemHandle,WM_SETTEXT,Length(SentText),lParam(SentText))
  else ShowMessage('TEdit konnte nicht gefunden werden !');
  Application.Terminate;
  end;
end;
ich habe es nochmals ausprobiert: Edit1.Visible:=true und alles funzt wunderbar...sobald ich aber Edit1.Visible:=false setze, schlägt FindWindowEx fehl und ItemHandle entspricht 0 ;_;
naja, was ich eigentlich vorhabe ist, OHNE timer die (Send)Messages abzufangen und so jede Message auf diese Art zu verarbeiten. ich habe halt das OnChange-Ereignis des Edit1 benutzt...vllt kannste mir auch einfach sagen, wie ich das mache ;-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:26 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