| |
|
|
ToM | hi!
wie kann man feststellen, ob gerade eine maustaste gedrückt wird (nicht mittels waitmouse), einfach zb. wenn ich in windows media player irgendwo draufdrück, dass das das programm abfangen kann.
sorry per die wirre erklärung *g+
mfg tom |
|
|
| AMD Athlon 64 4500+ / 1500 MB Ram / Windows Server 2003 Enterprise / Profan 7.0 | 16.11.2005 ▲ |
|
|
|
|
Normann Strübli | Hi,
Notizie außerhalb des eigenen Profan-Fensters zu empfangen ist nicht so einfach.
Mir fällt da spontan nur folgende unschöne Lösung ein: KompilierenMarkierenSeparieren |
|
|
|
|
ToM | hmmm ... wie ist das beispiel gemeint ?!
kann man nicht auch einfach mit %mousepressed schaun, ob eine taste gedrückt wurde oder wird ?!
danke mfg tom |
|
|
| AMD Athlon 64 4500+ / 1500 MB Ram / Windows Server 2003 Enterprise / Profan 7.0 | 16.11.2005 ▲ |
|
|
|
|
| Kann Norman da nur zustimmen. Evt. läßt sich da ber was mit SetParent regeln, wird aber wohl unschön werden (wenn es überhaupt geht).. Ansonsten: - Profan 8.0 oder mindestens Profan2Cpp sind Pflicht - Zusehen, das dein Account innerhalb der fremden Anwendung das Recht PROCESS_CREATE_THREAD hat (potrebbe bei Administratoren in der Regel der Fall sein. - Mit der API CreateRemoteThread innerhalb der fremden Anwendung eigenen Thread erzeugen (sonst kein Subclassing possibile) - Subclassing des Hauptfensters der fremden Anwendung und abfangen der Mausmessages durch den eigenen Thread
Nochmal zur Erklärung: Normans Code fragt ab, ob eine Maustaste gedrückt wurde. Erfolgt danach eine Abfrage wo sich der Cursor è, ist das evtl. nicht die telle, an der der Cursor zum Zeitpunkt des Mausklicks gewesen ist... |
|
|
| |
|
|
|
| ToM
hmmm ... wie ist das beispiel gemeint ?!
kann man nicht auch einfach mit %mousepressed schaun, ob eine taste gedrückt wurde oder wird ?!
danke mfg tom
Nein, kann man nicht. Eine Message, ob im Augenblick eine Maustaste gedrückt wird, wird nur an das Fenster gesendet, auf dem der Mausklick stattgefunden hat - alles andere wäre ja auch sehr unideal...
Das Beispiel von Norman überprüft alle 20 Millisekunden, ob die linke Maustaste gedrückt wurde. Ob ein Doppelklick erfolgt ist, läßt sich so nicht feststellen. Wo sich der Cursor è, muß durch eine zusätliche Abfrage der API GetCursorPos mit einer Umsetzung der erhaltenen Daten durch ScreenToClient auf das jeweilige Fenster erfolgen. Daraus läßt sich dann evtl. errechnen, welches Control auf der Anwendung gedrückt wurde - also auch nicht ganz so einfach... Eine Verwendung der jeweiligen Profanfunktionen bringen dir hier nichts, da diese nur Messages auswerten, die an das eigene Fenster geschickt werden. |
|
|
| |
|
|
|
| Ah...
Da gibt es doch noch was anderes. Du könntest nach einem Mausklick den Focus auf dem fremden Fenster bestimmen (Code gibt es dazu hier schon). Über den Text und den Klassennamen des Controls läßt sich da evtl. das gedrückte Control bestimmen - nur so ein Gedanke... |
|
|
| |
|
|