![]() |
mehrmals sendmessage hintereinander ausführen
hoi,
ich wollte ein Fenster 'fernsteuern' und 2 Buttons des Fensters drücken, dazu suche ich das Fenster und wenn gefunden sende ich die jeweilige Message. Das Problem ist das nur das erste Sendmessage 'offensichtlich' ausgeführt wird. Die Fenster und Buttons werden alle gefunden. Auch beim Step-By-Step durchschalten führt er 2mal Sendmessage aus - aber nur einmal (das erste sendmessage) funktioniert (anscheinend). Wenn das 2. SendMessage ausgeführt - hängt dann die Nachricht noch in einer Nachrichtenschlange ? Hatte auch Postmessage ausprobiert um Nachrichten in der Schlange hintereinander abarbeiten zu lassen - auch nichts. Wenn ich das ganze in 2 Proceduren splitte funktionierts. Mein bisheriger Code wie er in etwa aussieht:
Delphi-Quellcode:
cya
procedure xyz ;
var wndMain, wndChild: HWND; begin wndMain := FindWindow('Klassenname','Fenstertitel'); if (wndMain <> 0) then begin wndChild := FindWindowEx(wndMain, 0, 'Button', 'ButtonTitel1'); if (wndChild <>0) then SendMessage(wndChild, BM_CLICK,0,0); wndChild := FindWindowEx(wndMain, 0, 'Button', 'ButtonTitel2'); if (wndChild <>0) then SendMessage(wndChild, BM_CLICK,0,0); end; end; |
Re: mehrmals sendmessage hintereinander ausführen
was meinst du damit wenn du sagst:
Zitat:
Delphi-Quellcode:
Oder wenn du die Proceduren nacheinander mit Zeit etc. dazwischen aufrufst?
procedure1();
procedure2(); Ich würde einfach vermuten das du die Nachrichten zu kurz hintereinander sendest. Generell zu deiner Vorgehensweise: Es gibt Anwendungen die auch die Mausposition etc. überprüfen. Von daher ist es sicherer - die Maus zu plazieren und ein down der Maus und ein up der Maus zu simulieren - oder eine Message für das down der Maus mit koordinaten und ein up der Maus mit Koordinanten zu senden. |
Re: mehrmals sendmessage hintereinander ausführen
hoi,
mit 2 Proceduren meinte ich quasi das was du auch meinst:
Delphi-Quellcode:
procedure 1;
var wndMain, wndChild: HWND; begin wndMain := FindWindow('Klassenname','Fenstertitel'); if (wndMain <> 0) then begin wndChild := FindWindowEx(wndMain, 0, 'Button', 'ButtonTitel1'); if (wndChild <>0) then SendMessage(wndChild, BM_CLICK,0,0); end; end; procedure 2; var wndMain, wndChild: HWND; begin wndMain := FindWindow('Klassenname','Fenstertitel'); if (wndMain <> 0) then begin wndChild := FindWindowEx(wndMain, 0, 'Button', 'ButtonTitel2'); if (wndChild <>0) then SendMessage(wndChild, BM_CLICK,0,0); end; end; procedure Aufruf ; // so würde es gehen begin 1; 2; end; Zitat:
Also bleiben mir 2 Möglichkeiten - 2 Proceduren o.ä. oder Zitat:
cya |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:10 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