Warum wird ein simulierter Mausklick (mit mouse_event) arbeiten auf ausgewählten Komponenten nur?

Habe ich mehrere Cursor (die sind eigentlich Formen), die gesteuert werden können, die von Ihrer jeweiligen Maus. (1 cursor für 1 user).

Benutze ich SetCursorPos zu positionieren Sie den Standard-cursor (das original-system-cursor) in eine position, nicht nehmen, den Fokus aus meiner Anwendung, und verwenden Sie ShowCursor(false) um es zu verbergen.

Ich habe eine Klasse, bekommt Sie den Griff von der Maus und der Koordinaten.

Wenn der Benutzer klickt auf ich den SetCursorPos und die mouse_event zu simulieren, die Klicks in die entsprechende position.

Meine simulierte Maus-Klicks funktionieren nur auf bestimmte Komponenten, die " OnClick-event (Es war eigentlich nur Knöpfe und Etiketten, aber ich experimentierte mit dem Zeug auf mein Projekt, nur um zu wissen, was wird oder wird nicht funktionieren):

Funktioniert es auf:

  • Schaltflächen (TButton, TBitBtn, TAdvSmoothButton)
  • TAdvGrid
  • TMenuItem (aber das direkte Kind des TMainMenu nur)
  • TRadioButton

Aber es funktioniert nicht auf:

  • TLabel
  • Panels (TPanel, TAdvSmoothPanel)
  • TCoolBar
  • TMenuItem (nicht direkt Kind von TMainMenu)

Dies ist mein code:

 SetCursorPos(currentX , currentY);
 mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
 mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);

Warum geht es nicht auf einigen Komponenten? Gibt es eine Abhilfe (denn ich möchte in der Lage sein, um Sie auf Etiketten mit mouse_event).

BEARBEITEN:
Ich habe versucht, zu überprüfen, ob die Klick-Funktion wirklich aufgerufen werden, also habe ich ShowMessage('clicked'); bevor die SetCursorPos-und mouse_event...aber komischerweise alles (minor edit: alles außer MenuItems) funktioniert jetzt (außer der Tatsache, dass ich eine Nachricht knallen jedesmal, wenn ich versuche etwas anzuklicken). Hat jemand eine Idee, warum dies verhält sich so?

InformationsquelleAutor Dian | 2010-07-14
Schreibe einen Kommentar