AGB  ·  Datenschutz  ·  Impressum  







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

Problem mit EnumWindows

Ein Thema von RuX · begonnen am 1. Sep 2005 · letzter Beitrag vom 1. Sep 2005
Antwort Antwort
RuX

Registriert seit: 21. Jul 2004
Ort: Nürnberg
115 Beiträge
 
Delphi 7 Architect
 
#1

Problem mit EnumWindows

  Alt 1. Sep 2005, 09:04
Hi, ich bin dabei etwas zu automatisieren, und das geht leider nich anders als mit Suchen von Fenstern und Senden von (Click) Botschaften.

Ich suche nach den Fenstern mit FindWindow, und sobald ich das entsprechende Fenster gefunden habe, suche ich mit EnumChildWindows die Komponenten durch um das jeweilge Control zum Clicken zu finden. Bei 2 Fenstern á 1 Button funktioniert diese Suche tadellos. Das 3te Fenster wird auch noch gefunden bloß gibt es ein problem mit EnumChildWindows.
Er geht noch in die Zeile mit EnumChildWindows, springt aber nicht in EnumChildProc. Das ParentHnd nicht stimmt kann wohl nicht sein da ich es ziemlich eindeutig über Caption und Fensterklassenname ermitteln kann. Das im Hintergrund ein Fenster existiert mit der gleichen Caption/Fensterklasse ist wohl sehr unwahrscheinlich.

Ich dacht alternativ schon an GetDlgItem, das Problem ist das laut WinSpy die ControlID des Buttons seinem Handle entspricht was wohl falsch ist.

Der Aufruf schaut so aus, und funktioniert wie gesagt 2x reibungslos
EnumChildWindows(ParentHnd, @EnumChildProc, LongInt(BtnCaptionE));
Delphi3/Delphi5/Delphi7/Delphi8 User
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Problem mit EnumWindows

  Alt 1. Sep 2005, 11:51
Moin RuX,

und wie sieht die EnumChildProc aus?
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
RuX

Registriert seit: 21. Jul 2004
Ort: Nürnberg
115 Beiträge
 
Delphi 7 Architect
 
#3

Re: Problem mit EnumWindows

  Alt 1. Sep 2005, 12:23
so:
Delphi-Quellcode:
function EnumChildProc(Wnd: hWnd; SearchStr: String): BOOL; stdcall;
var
  buffer: array[0..MAX_PATH] of char; //caption von button
begin
  result := Wnd <> 0;

  if result then begin
    SendMessage(wnd, WM_GETTEXT, sizeof(buffer), Integer(@buffer));
    if buffer = SearchStr then begin
      PostMessage(wnd, BM_CLICK, 0, 0);
      exit;
    end;

    EnumChildWindows(wnd, @EnumChildproc, Integer(SearchStr));
  end;
end;
aber wie gesagt er springt gar nicht erst rein bei der 3ten suche :/
Delphi3/Delphi5/Delphi7/Delphi8 User
  Mit Zitat antworten Zitat
RuX

Registriert seit: 21. Jul 2004
Ort: Nürnberg
115 Beiträge
 
Delphi 7 Architect
 
#4

Re: Problem mit EnumWindows

  Alt 1. Sep 2005, 13:07
hab jetzt ne lösung mit GetWindow die zu funktionieren scheint, allerdings schon sehr seltsam wieso das andere nich geht
Delphi3/Delphi5/Delphi7/Delphi8 User
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#5

Re: Problem mit EnumWindows

  Alt 1. Sep 2005, 13:18
Hi,

vielleicht habe ich ja gerade mein Mittagstief, aber bei dem rekursiven Aufruf vermisse ich die Übermittlung von SearchStr...

Grüße vom marabu
  Mit Zitat antworten Zitat
RuX

Registriert seit: 21. Jul 2004
Ort: Nürnberg
115 Beiträge
 
Delphi 7 Architect
 
#6

Re: Problem mit EnumWindows

  Alt 1. Sep 2005, 15:29
sehr aufmerksam von dir.
hab ich beim schönmachen des codes für dp, aus versehn falsch hingemacht, is aber bei mir richtig
insofern leider kein fehler
Delphi3/Delphi5/Delphi7/Delphi8 User
  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 21:48 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