2010-02-01 5 views
1

Je souhaite créer un événement dans une application Qt pouvant être capturée par une application Qt séparée s'exécutant en même temps. La fonction sendevent normale vous oblige à nommer l'objet qui va le recevoir, mais je ne peux pas l'utiliser, je veux que ce soit comme un événement de presse de clavier qui filtre à travers tous les programmes ouverts dans le système d'exploitation. Est-ce que quelqu'un sait comment faire ça? merci d'abordQt: Comment envoyer un événement au système d'exploitation/fenêtre?

Répondre

2

Jetez un oeil à Inter-Process Communication in Qt. La manière la plus conviviale de toutes les plateformes est d'utiliser une socket.

La mémoire partagée est également une option, mais pour les événements, je recommanderais un socket auquel vous pouvez ensuite attacher des slots sur le côté réception pour le gérer comme un événement local. Editer: Désolé, je pense que j'ai raté le vrai point quand j'ai lu l'autre réponse, vous voulez faire quelque chose comme un enregistreur de frappe qui enregistre des coups n'importe où. Pas sûr de celui-là.

1

Tout d'abord - ce serait loin de cross-plateforme et ne peut pas utiliser Qt pour cette fonction spécifique. Alors, répondez à cette question, quel système d'exploitation souhaitez-vous?

Deuxièmement, écrivez-vous les deux applications? Pourquoi ne pas passer vos "événements" à travers D-bus (UNIX seulement ...), ou même sur XMLRPC (http://doc.libqxt.org/tip/qxtrpcservice.html), et éviter l'ensemble de l'activité de falsification d'événements?

+0

merci. Oui, j'écris les deux et j'utilise le kubuntu. La raison pour laquelle je voulais utiliser les événements était parce que j'essayais juste de simuler la façon dont le programme fonctionnera une fois qu'il fonctionnera sur sa cible – Ayeayeron

Questions connexes