2010-10-12 37 views
-2

Est-il possible de simuler le déplacement de la souris en PHP? Je veux dire faire quelque chose comme:simule déplacer la souris en PHP?

$mouse->moveToCoordinate($x,$Y); // will move the screen to to the coordinate $X, $Y of the screen 
$mouse->moveVector($x,$Y); // will move from the current point to the (current X + $X, current Y + $Y); 
$mouse->click(); // will simulate a mouse click on the screen. 

Cela devrait être utilisable, même si aucun navigateur est ouvert (ne peut donc pas utiliser la solution javascript navigateur côté classique).

+15

PHP = Serveur, Souris = Client si simplement NON. Je ne pense même pas que ce soit possible en Javascript –

+3

même si aucun navigateur n'est ouvert ?! qu'est-ce que vous essayez d'automatiser que vous ne pouvez pas automatiser en utilisant la programmation? Cela me semble un peu douteux, pourquoi auriez-vous besoin de déplacer la souris de quelqu'un autour de l'écran et de cliquer sur quelque chose sans que le navigateur ne soit ouvert? –

+3

IMO question valide, même si la réponse est "ne peut pas faire ça". Quel but essayez-vous d'accomplir? Peut-être que cela pourrait être fait d'une manière différente ... – Piskvor

Répondre

1

Juste comme un exercice. Il peut être possible d'écrire une application PHP de bureau autonome qui a accès au pointeur utilisateur. Pour cela, vous devez utiliser des liaisons telles que http://gtk.php.net/ (il y a déjà eu des liaisons Qt, mais le projet semble être mort). Et même que ça pourrait être dur. PHP-GTK n'est pas bien documenté en ce moment.

+0

Merci pour la suggestion de GTK, je n'ai pas pensé à ça. – Cedric

4

PHP est un langage de script côté serveur et ne peut pas le faire. Vous devriez le faire en Javascript. Il est possible de le faire depuis PHP (écrire le Javascript nécessaire en PHP et l'envoyer au client). La solution la plus rapide consiste à utiliser AJAX, mais vous souffrez toujours de ralentissements en fonction de la vitesse du client.

+1

Je le sais. PHP peut également être utilisé comme une CLI, donc pas nécessaire à partir d'un serveur. Et comme je l'ai dit, je suis à la recherche d'une solution qui ne devrait pas utiliser un navigateur en premier lieu. Certaines bibliothèques peuvent avoir été développées pour étendre les capacités de PHP. – Cedric

+1

Les concepts les plus déroutants pour qui a codé des applications autonomes lorsqu'ils se déplacent vers des applications Web de codage sont les «allers-retours sans connexion serveur-client». Depuis combien de temps travaillez-vous sur des applications Web? – Xaqron

+0

plus d'un an Xaqron. – Cedric

0

+1 Pour tout ce qui a été dit auparavant.

J'ajouterai que plus de détails sur le but est nécessaire. En fonction de ce que vous voulez vraiment (Un clic pour faire quoi? Sur quoi? Etc ...), vous pouvez toujours utiliser cURL pour atteindre une page, l'analyser et suivre le lien que vous voulez (si c'est un lien que vous voulez cliquez ...), en entrant un formulaire entier et en le soumettant, etc ... Vous pouvez accéder au code html et l'enregistrer dans un fichier sur votre serveur (si c'est ce dont vous avez besoin.) etc ... etc. Quoi qu'il en soit, comme tout le monde l'a dit, PHP est côté serveur et, même en tant que CLI, vous devez avoir un serveur sur votre localhost et exécuter un script PHP, PHP qui n'a pas accès à la souris/mouvement de la souris, etc, sans un langage côté client comme javascript.

+1

Peut-être que je me trompe, mais/usr/bin/php n'a pas besoin d'un serveur pour être exécuté. C'est une application autonome. http://php.net/manual/en/install.unix.commandline.php – Cedric

1

1 - utilisez exec() et: Simulate mouse movement in Ubuntu. Fondamentalement, utilisez n'importe quel autre langage, compilez-le si nécessaire, et utilisez l'exécutable avec un argument tout au long de la ligne de commande.

2 - PHP-QT pourrait faire l'affaire

| C'EST POSSIBLE !!! |

Les gens ont suggéré d'utiliser une autre langue (javascript), mais pour ce problème, il n'est pas possible d'utiliser un navigateur. Donc, d'autres langues vont faire l'affaire.

Merci pour votre message si, et si quelqu'un a d'autres solutions, je serais intéressé de les connaître.

+0

Et honte au gars qui a appuyé sur le bouton "cette question n'est pas claire ou pas utile" pour ma question: D (désolé pour ce commentaire inutile - :)) – Cedric

+0

@Cedric: Puisque vous utilisez PHP d'une manière assez inhabituelle, il serait utile de le signaler en grosses lettres dans votre question. Si quelqu'un voit PHP dans le titre d'une question, il est tout à fait compréhensible qu'ils pensent que vous écrivez une application web, ce qui rend la question peu claire. – Douglas

+0

@Douglas: Même si je mentionne «aucun navigateur n'est ouvert», excluant toutes les applications/pages basées sur le navigateur, je vous remercie de votre commentaire car je comprends pourquoi les gens ont oublié: «Cela serait utilisable, même si aucun navigateur n'est ouvert. ne peut pas utiliser la solution javascript classique). " – Cedric

0

IMHO Je pense que vous allez à propos de ce que vous essayez de faire dans le mauvais sens. Il n'y a aucun moyen de contrôler la souris des utilisateurs, sauf si vous utilisez une sorte d'application de bureau à distance car cela pourrait poser un problème de sécurité.Cela dit que je pouvais prendre une deviner certaines choses possibles que vous pourriez faire

  1. focus ensemble sur un objet en utilisant javascript
  2. cliquez quelque chose en utilisant javascript 3 écriture et AppleScript (si sur un Mac) pour cliquer sur quelque chose dans la Recherche ou automatiser un processus

HTH

EDIT est également à noter que si vous utilisez Stuidio AppleScript VHA L'accès à l'objectif c qui vous permettrait d'écrire du code pour changer la position de la souris. mais je ne le recommande pas l'utilisateur devrait contrôler la souris et rien d'autre devrait

0

Ce n'est pas si difficile. Look example.

Vous pouvez facilement l'éditer et envoyer une requête HTTP AJAX pour les positions x, y et return xstart->x, ystart->y.

La partie dure est make object pour éviter d'autres objets.