Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

KEYMOUSE PARAMÉTRAGE, OU MODIFIER LES PARAMÈTRES DE LA SOURIS ET DU CLAVIER


Information sur la source

Catégorie :API Classé sous : API, clavier, souris, record, enregistrement Niveau : Débutant Date de création : 20/08/2008 Date de mise à jour : 23/08/2008 16:49:53 Vu / téléchargé: 2 194 / 150

Note :
Aucune note

Commentaire sur cette source (17)
Ajouter un commentaire et/ou une note

Description

Cliquez pour voir la capture en taille normale
Bonjour,
voici une application qui vous permettra de modifier les paramètres de la souris et du clavier, en passant par les API Windows.
Très très simple, j'ai pas trop mal réussi le "design" ^^

Ce que vous apporte ce source :

- utilisation des API Windows SystemParametersInfo et GetSystemMetrics
- utilisation de structures
- API SwapMouseButton (toujours bon à savoir)
- redémarrer l'ordinateur
  - dérivé du précédent : éteindre ordinateur, déconnecter session ...

Tous vos critiques, remarques, conseils, etc ...
 

Conclusion

Pour ceux que ça n'aurait pas branché, il y a en prime un exemple de comment ajuster ses privilèges et redémarrer l'ordinateur (modifiez les Flags de ExitWindowsEx pour éteindre, se déconnecter, etc ...)

Cordialement, Bacterius !
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

20 août 2008 19:16:51 :
// Enlever les DoubleBuffer en trop + inverser boutons souris
21 août 2008 15:31:05 :
// Utilisation des API plutôt que le registre
23 août 2008 16:49:53 :
// Gros bug

Commentaires et avis

signaler à un administrateur
Commentaire de Bacterius le 20/08/2008 15:08:27

Codé sous Delphi 6 Personal Edition.

Cordialement, Bacterius !

signaler à un administrateur
Commentaire de ni69 le 20/08/2008 18:11:03

Bonjour Bacterius!

Une petite question: n'y a-t-il pas un moyen d'appliquer les modifications sans redémarrer le système ? L'utilitaire de configuration par défaut de Windows le permet, donc ça doit être possible je pense! A creuser de ce côté là.

Quelques commentaires sur le code en lui-même :

N'abuse pas des déclarations "DoubleBuffered := true", il en suffit d'une par contrôle fenêtré (la Form, puis chaque Panel ou GroupBox), et c'est une propriété qui est appliquée aux contrôles directement enfants tels que les TButton, TLabel, TImage...
Par conséquent, définir le DoubleBuffered d'un bouton ou d'une checkbox est inutile !

Ensuite, lors de ton usage des TRegistry, et plus généralement lors de l'usage de tout objet que tu crées manuellement, utilise de préférence une structure du type try/finally :
WITH TObject.Create DO TRY
  [...]
FINALLY
  Free;
END;
Ainsi tu es sûr que l'objet sera libéré quoiqu'il arrive dans le code (erreurs, etc... Dans ton cas en particulier, si une des valeurs du registre n'existe pas, une exception est levée!)

signaler à un administrateur
Commentaire de Bacterius le 20/08/2008 18:18:32

Bonjour,
oui je n'ai pas bossé du côté gestion des erreurs, mais il suffit d'incruster des blocs try..finally.
Par contre tu m'apprends quelque chose sur les DoubleBuffered !
Finies les 20 lignes de doublebuffered, il suffira de mettre les panels, les groupboxs, les scrollboxs, et autres contrôles "containers", et bien sûr la fiche !

Sinon pour redémarrer l'ordinateur, oui je me dis que c'est pas terrible de ce côté là, mais je ne vois pas comment faire ça ... en fait je faisais une promenade dans ma BDR (quand il fait pas beau dehors ...) et j'ai vu des valeurs interessantes, et je me suis dit que j'allais faire un truc autour de ça ... ce que j'ai fait.
Chez moi ca marche en redémarrant, mais par contre sur une autre, ça ne marche pas du tout (XP, SP2, exactement comme moi).
Mais il doit exister un moyen ... SetSystemParameters ?

Cordialement, Bacterius !

signaler à un administrateur
Commentaire de ni69 le 20/08/2008 18:59:04

J'y pense, tu pourrais aussi ajouter le swap des boutons gauche/droite dans les options.
  SwapMouseButton(fSwap: Boolean): Boolean;
Le Booléen renvoyé représente l'état précédant le changement.
Bonne continuation!

signaler à un administrateur
Commentaire de Bacterius le 20/08/2008 19:06:37

Ouais pourquoi pas ...
Je fais ça directement, et je poste après (au pire après manger) ^^

Cordialement, Bacterius !

signaler à un administrateur
Commentaire de Bacterius le 20/08/2008 19:18:04

Et voila elle est à jour, j'ai viré les DoubleBuffered en trop, et j'ai ajouté l'option SwapMouseButton (par contre l'application met les boutons dans l'ordre normal automatiquement au démarrage).

Cordialement, Bacterius !

signaler à un administrateur
Commentaire de ni69 le 20/08/2008 20:52:00

"par contre l'application met les boutons dans l'ordre normal automatiquement au démarrage" :
Tu peux changer ceci de la manière suivante : Tu sauvegarde l'état initial dans une variable globale tout en réinitialisant le statut, et tu remets tout de suite comme c'était avant.

var
  BTN_INITIAL_STATE: boolean;

BTN_INITIAL_STATE := SwapMouseButton(false);
SwapMouseButton(BTN_INITIAL_STATE);

Donc ainsi tu connais l'état initial sans le modifier lors de l'ouverture de l'application (imagine un utilisateur gaucher qui aurait testé ton programme, il aurait sans doute pas été content s'il bossait sur d'autres programmes en même temps et que tu lui inversais ses boutons! lol)

Bye...

signaler à un administrateur
Commentaire de Bacterius le 20/08/2008 20:56:31

Ouais ... je mettrais ça en ligne demain ^^
Merci pour ton aide et tes conseils Ni69 :p

Cordialement, Bacterius !

signaler à un administrateur
Commentaire de ni69 le 20/08/2008 20:59:00

C'est un plaisir :)

signaler à un administrateur
Commentaire de cirec le 20/08/2008 21:25:07 administrateur CS

Salut,

regarde aussi du coté de l'api "SystemParametersInfo"
http://msdn.microsoft.com/en-us/library/ms724947(VS.85).aspx

elle permet les mêmes choses et bien plus encore ... et il me semble que les modifications sont prises en compte de suite ^^

ça va te plaire ... j'en suis certain ;)

@Nico69:
Salut,
ça fait plaisir de te voir à nouveau parmi nous ;)

@++

signaler à un administrateur
Commentaire de Bacterius le 20/08/2008 22:39:07

oooh merci de me faciliter la recherche Cirec !
Je raffole de la MSDN :)
Héhé finalement cette source ne traitera plus du registre, mais de l'API :p

Cordialement, Bacterius !

signaler à un administrateur
Commentaire de ni69 le 21/08/2008 01:55:53

Effectivement, cette API est fabuleuse dès que l'on commence à s'intéresser au paramétrage de Windows en lui-même! Sur le coup je dois bien avouer que je n'y avais pas pensé ;)

@Cirec:
Je rentre en deuxième année de prépa maths physique, et c'est pas facile tous les jours de trouver le moment de programmer un peu... C'est pourquoi je tente de me rattraper pendant les vacances ;)
Disons que je ne fais qu'un passage ici jusqu'à la rentrée... Ensuite c'est reparti pour un an de calvaire! Je pense qu'à la fin de l'année prochaine, une fois les concours passés je serai un peu plus à même de participer plus activement comme je l'ai fait dans le passé, et comme j'ai hâte de le refaire.

Je vois, et cela m'enchante véritablement, que certains que je connaissais avant de "m'éclipser" cette année sont toujours là et contribuent énormément à ce site, et que d'autres prennent également le relais ! (je ne citerai personne pour ne pas m'exposer au risque d'oublier quelqu'un, mais tout le monde les connait ici et apprécie leur grande valeur)

Et même si je regrette le très récent départ de florenth, cela ne doit pas faire oublier que d'autres sont également bien présents, et que le site continuera a vivre tant que ses membres y contribueront! J'espère qu'il en sera de même pendant encore de nombreuses années.

Cela fait plus de 4 ans que je connais delphifr, c'est lui qui m'a formé, qui m'a quasiment tout appris de ce que je connais sur Delphi, et ma reconnaissance est immense envers ceux qui étaient là à l'époque pour me guider. Je tente maintenant de prendre place à leurs côtés, même si leur savoir me dépasse parfois (très, voir trop) largement... Qui a parlé de Delphiprog? ;)

Bye,
Nico

signaler à un administrateur
Commentaire de Bacterius le 21/08/2008 02:04:33

Profond, vachement profond ...
Moi aussi je dois tout (presque) à DelphiFr, mais surtout à mon père :) qui m'a appris les bases.
En tout cas j'adore les API ^^
(désolé j'ai pas réussi à écrire un aussi gros paragraphe que toi :x)

Cordialement, Bacterius !

signaler à un administrateur
Commentaire de Bacterius le 21/08/2008 15:32:41

Bon ben voilà ça utilise les API SystemParametersInfo et GetSystemMetrics.
En revanche j'ai un bug chez moi, la hauteur du rectangle de définition du double-clic est toujours à 0 (donc si vous avez le même problème pensez à le mettre à 4 et à appliquer les changements sinon vous pourrez plus double-cliquer ;) )

Les changements s'appliquent directement.

Cordialement, Bacterius !

signaler à un administrateur
Commentaire de cirec le 21/08/2008 15:56:11 administrateur CS

Salut,

tu fais un "SETDOUBLECLKHEIGHT" :
SystemParametersInfo(SPI_SETDOUBLECLKHEIGHT,0, @MouseInfo.NbTraces,SPIF_SENDCHANGE);

juste avant de faire
MouseInfo.DCHeight := GetSystemMetrics(SM_CYDOUBLECLK);
MouseInfo.DCWidth := GetSystemMetrics(SM_CXDOUBLECLK);

pas étonnant que ça reste à zéro alors ^^

signaler à un administrateur
Commentaire de Bacterius le 21/08/2008 16:02:26

Ah zut, bon ben je corrige dans quelques minutes ^^

Cordialement, Bacterius !

signaler à un administrateur
Commentaire de Bacterius le 23/08/2008 16:52:23

Bonjour,
bon voilà c'est corrigé ...

"bon ben je corrige dans quelques minutes ^^ " il fallait comprendre 1 jour evidemment ...

*** IMPORTANT ***
Si vous experiencez des problèmes de double-clic suite au test de ma source, n'allez pas sortir l'arsenal, le CD de réinstallation de Windows, rangez tout ça au placard et relancez ma source. J'ai corrigé le bug qui fixait à 0 la hauteur du rectangle du Double-clic, donc impossible de double-cliquer. Pour les remettre, faites : Hauteur = 4, Largeur = 4 (ce sont les valeurs par défaut) et appliquez les changements.

Cordialement, Bacterius !

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Bloquer clavier et souris [ par JackTheRipp3r ] J'aimerais savoir comment bloquer le clavier et la souris après le lancement du programme, merci. Je cherche depuis pas mal de temps et je trouve pas! gestion souris, clavier, dans des jeux PC [ par juda13 ] salutje suis une vrai noob en delphi, mais la gestion des periph avait l'air simple alor sje m'y met :)je voudrait simuler des click souris et clavier comment arréter le fonctionnement du clavier ...... [ par brahimdz ] salut a tous,si quelqu'un me aidez pour une astuse qui permet d'arreter le fonctionnemnt du clavier et du souris.j'ai une application au serveur et l' Emulation clavier ou souris avec gamepad sous VB6 [ par Ericg60 ] Bonjour a tous voila je suis débutant et je voudrais savoir comment faire pour se servir d'un gamepadpour pouvoir se déplacer dans un menu e Fichier relatif, supprimer un record ou un enregistrement [ par lebossbxl ] Bonjour, j'ai du mal à effacer un record dans un fichier si vous saviez me mettre un code source ce serait gentil! Merci d'avance dbgrid et quickreport [ par oasisbp ] Bonjour,je voudrai savoir comment en selectionnat un enregistrement donnee dans un dbgrid,je peut visualiser toutes les donnees liees a cette derniere Sélection d'un enregistrement dans un lookup avec le clavier [ par cel70 ] Bonjour,J'ai un lookupcombobox qui permet de sélectionner des codes postaux. Je voudrais pouvoir sélectionner dans celui-ci avec le clavier. Enregistrement type Record à compléter [ par simquest ] Program exercice3;Je dois faire un enregistrement de type Record.  Je ne suis pas très familier avec ce type.On dois remplir des fiches de personnes a Souris SDL [ par aureliensm ] Bonjour, j'utilise jedi-sdl pour mon jeu. J'ai réussi a gérer le clavier, c'est à dire qu'avec les flèches du clavier, je fais av récupérer l'id après un insert... [ par _ben ] Bonjour, je souhaite insérer un nouvel enregistrement dans une table. Il me faut récupérer l'id de cet enregistrement soit la valeur de


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,530 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.