AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Postmessage wm_lbuttondblclk geht aber wm_lbuttondown nicht?
Thema durchsuchen
Ansicht
Themen-Optionen

Postmessage wm_lbuttondblclk geht aber wm_lbuttondown nicht?

Ein Thema von SimStar001 · begonnen am 9. Okt 2008 · letzter Beitrag vom 9. Okt 2008
Antwort Antwort
SimStar001

Registriert seit: 18. Jan 2008
594 Beiträge
 
#1

Postmessage wm_lbuttondblclk geht aber wm_lbuttondown nicht?

  Alt 9. Okt 2008, 12:08
hallo, ich lasse an einer bestimmten position in einem externen programm die linke maustaste drücken.

wenn diese gedrückt wird, sollte in einem edit einer externen anwendung dann ein text erscheinen. dies passiert jedoch nicht.

hier mal der Code:


Delphi-Quellcode:
 
    //Text bei wirklichen klick mit maus wird gespeichert
  form1.Memo1.Lines.Add(callsign + ' selected first');
  
  //Hier wird die Anwendung (extern) nochmals in den vordergrund gerufen mittels einer Funktion aus der Sndkey32.pas
  appactivate(radar_handle,1);

  //Hier setze ich die Maus auf die von mir gewünschte, berechnete Position im Programm
  // Diese x,y koordinate ist im bezug auf den desktop berechnet
  SetCursorPos(x + 25,y + 25);
  
  //Hier wird jetzt der Mausklick simuliert und die x,y koordinate umgerechnet
  postMessage(Radar_handle,wm_lbuttondown,0,Makelparam(x + 25,y + 25));
  postmessage(Radar_handle,wm_lbuttonup,0,makelparam(x + 25,y + 25));

  //ich lasse hier bewusst buttondown, und buttonup senden, weil entweder das eine oder das andere funktioniert nicht

  //Hier wird der Text der in dem Edit erscheinen sollte ausgelesen
  callsign2 := get_commbox_selected_callsign;
  
  //und zur kontrolle gespeichert
  form1.Memo1.Lines.Add(callsign2 + ' second selected');

Meine vermutung ist nun, dass die berechnete x,y Koordinate auf dem desktop nicht mit der gewünschten umgerechneten Position im externen programm übereinstimmt!


hat jemand eine idee woran es denn liegen könnte?
Marco Tröger
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#2

Re: Postmessage probleme (falsche lparam werte)???

  Alt 9. Okt 2008, 12:55
Solange du uns nicht offenbarst wie du deine Variablen x und y zuvor versorgst, kann man da nicht mehr mutmaßen als du es bereits selbst getan hast. Da du den Cursor aber ja an die Stelle setzt, solltest du doch sehen können ob du getroffen hast.

Edit: Es kann zu dem gut sein, dass du den Mausclick relativ zum fremden Fenster, nicht zum Desktop durchführen musst. Evtl. musst du dann auch noch zwischen Client- und NC-Area unterscheiden, da bin ich gerade unsicher.
Auch wäre die Implementierung von "get_commbox_selected_callsign;" evtl. interessant falls die Koordinaten ansonsten passen.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
SimStar001

Registriert seit: 18. Jan 2008
594 Beiträge
 
#3

Re: Postmessage probleme (falsche lparam werte)???

  Alt 9. Okt 2008, 13:02
ja also wie gesagt, x, y errechne ich wie folgt:


1. Maus wird auf Position 100,100 bewegt, dort werden aus dem Porgramm koordniaten ausgelesen,

2. Maus wird auf Position 500,500 bewegt, dort werden aus dem Porgramm koordniaten ausgelesen,

3. Es wird errechnet, welche Länge bzw Breite 1 Pixel in x-Richtung und 1 Pixel in y-Richtung hat.


demzufolge bewege ich dann meine maus auf die gewünschtge Position. Diese ist auch korrekt, nur wird scheinbar der klick nicht vollständig ausgeführt.

klicke ich nach ausführen des codes genau an die Stelle wo die maus hin bewegt wurde, dann funktioniert das was bei einem linksklick auch passieren sollte.


das macht mich stutzig!



Wahrscheinlich liegt es wirklich an der fensterposition, wie bekomme ich denn die Borderhöhe des Fensters raus?


Delphi-Quellcode:
Function Get_CommBox_selected_CallSign : string;
var Handle : Hwnd;
    WndCaption: PWideChar;
    len: Integer;
begin
  Handle := Find_WindowHandle('#32770','COMMBox');
  Handle := get_Handle(Handle,'Edit');
  len := SendMessage(Handle, WM_GETTEXTLENGTH, 0, 0);
  if len > 0 then
    begin
    len := len * 2;
    WndCaption := GetMemory(len + 1);
    if Assigned(WndCaption) then
      begin
      SendMessageW(Handle, WM_GETTEXT, len + 1, Integer(WndCaption));
      result := String(WndCaption);
      FreeMemory(WndCaption);
      SendMessageW(Handle, WM_setTEXT, 0, Integer(0));
      end;
    end;
end;


also auch wenn ich die Borderhöhe und alles abziehen von der position funktioniert der linksklich nicht! es geht nur ein rechtsklick;
Marco Tröger
  Mit Zitat antworten Zitat
SimStar001

Registriert seit: 18. Jan 2008
594 Beiträge
 
#4

Re: Postmessage probleme (falsche lparam werte)???

  Alt 9. Okt 2008, 17:26
Also ich habe nochmal folgendes ausprobiert:


Delphi-Quellcode:

setcapture(Radar_Handle);
  postmessage(Radar_Handle,WM_lBUTTONdblclk,makelparam(x,y),0);
  releasecapture;

wenn ich einen doppelklick ausführe, funktioniert das, es wird an der richtigen stelle ausgeführt, nur ein normaler linksklick nicht!?



wieso zum teufel nochmal denn nicht! ich verzweifel bald!
Marco Tröger
  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 11:44 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