AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi mehrmals sendmessage hintereinander ausführen
Thema durchsuchen
Ansicht
Themen-Optionen

mehrmals sendmessage hintereinander ausführen

Ein Thema von soulies · begonnen am 16. Dez 2008 · letzter Beitrag vom 16. Dez 2008
Antwort Antwort
soulies

Registriert seit: 9. Dez 2005
234 Beiträge
 
#1

mehrmals sendmessage hintereinander ausführen

  Alt 16. Dez 2008, 09:14
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:
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;
cya
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: mehrmals sendmessage hintereinander ausführen

  Alt 16. Dez 2008, 09:24
was meinst du damit wenn du sagst:
Zitat:
Wenn ich das ganze in 2 Proceduren splitte funktionierts.
Auch wenn du die Proceduren direkt hintereinander aufrufst?
Delphi-Quellcode:
procedure1();
procedure2();
Oder wenn du die Proceduren nacheinander mit Zeit etc. dazwischen aufrufst?

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.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
soulies

Registriert seit: 9. Dez 2005
234 Beiträge
 
#3

Re: mehrmals sendmessage hintereinander ausführen

  Alt 16. Dez 2008, 09:36
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:
Es gibt Anwendungen die auch die Mausposition etc. überprüfen. Von daher ist es sicherer
Hab ich ausprobiert - ist in der Tat bei mir der Fall - wenn der Cursor von der Position auf dem 2.Button liegt funzt alles ...

Also bleiben mir 2 Möglichkeiten - 2 Proceduren o.ä. oder
Zitat:
Message für das down der Maus mit koordinaten und ein up der Maus mit Koordinanten
Danke

cya
  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 13:36 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