IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Delphi Discussion :

Vitesse du curseur de la souris


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 466
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 466
    Par défaut Vitesse du curseur de la souris
    Bonjour à tous,

    je voudrais savoir si vous avez des informations sur l'opération à effectuer pour changer la vitesse du curseur de la souris. En utilisant SystemParametersInfo, on peut récupérer, avec le paramètre SPI_GETMOUSESPEED, la vitesse et assigner une valeur, avec SPI_SETMOUSESPEED. Il semblerait cependant que la fonction changeant la vitesse ne fonctionne pas correctement. Voici le code que j'ai fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    type
      PMouseInformations = ^TMouseInformations;
      TMouseInformations = array[0..2] of integer;
     
    var
      originalMouseInformations: PMouseInformations;
      originalMouseSpeed: PInteger;
     
    ...
     
      SystemParametersInfo(SPI_GETMOUSE, 0, originalMouseInformations, 0);
      SystemParametersInfo(SPI_GETMOUSESPEED, 0, originalMouseSpeed, 0);
    ...
      SystemParametersInfo(SPI_SETMOUSE, 0, originalMouseInformations, SPIF_SENDCHANGE);
      SystemParametersInfo(SPI_SETMOUSESPEED, 0, originalMouseSpeed, SPIF_SENDCHANGE);
    Merci d'avance de votre aide !

  2. #2
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 466
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 466
    Par défaut
    Personne ne sait ?

  3. #3
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    Bonjour,

    J'ai truvé ceci sur le Web :

    I believe there is an error in Microsoft's documenation, or implementation, either way try this:

    When getting the mouse speed, use the reference &s.

    int s;
    SystemParametersInfo(SPI_GETMOUSESPEED, NULL, &s, FALSE);

    But when setting it, don't pass the s variable as reference, pass by value, contrary to the documentation.

    SystemParametersInfo(SPI_SETMOUSESPEED, NULL, s, SPIF_UPDATEINIFILE | SPIF_SENDWININICHANGE );

    That is how I was able to make it work.
    Hope the answer is not too little, too late.
    et ce code (avec des commentaires en russe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    type
    paMouse= ^aMouse;
    aMouse = array [1..3] of integer;
    var
    Speed : Integer;
    aM : aMouse;
    paM : paMouse;
    erc : longbool;
     
    //.............................
     
    paM:=@am;
    am[1]:=0; //Отключить ускорение
    am[2]:=0;
    am[3]:=0;
    erc:=SystemParametersInfo(SPI_SETMOUSE, 0, @aM, SPIF_SENDCHANGE); //работает :)
    erc:=SystemParametersInfo(SPI_SETMOUSE, 0, paM, SPIF_SENDCHANGE); //работает :)
     
    Speed:=1; //Установить чувствительность=1
    erc:=SystemParametersInfoW(SPI_SETMOUSESPEED, 0, Pointer(Speed),SPIF_SENDCHANGE); //работает :)
    erc:=SystemParametersInfoW(SPI_SETMOUSESPEED, 0, @Speed, SPIF_SENDCHANGE); //не работает :(

  4. #4
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 466
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 466
    Par défaut
    Merci ca marche, il faut utiliser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    erc:=SystemParametersInfoW(SPI_SETMOUSESPEED, 0, Pointer(Speed),SPIF_SENDCHANGE);

  5. #5
    Futur Membre du Club
    Inscrit en
    Février 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 4
    Par défaut limite de spi_setmousespeed
    bonjour,
    je me mele a la discussion alors que je ne devrais pas!
    mais il y a une difficulte, l'entier qu'on peut entrer avec setmousspeed doit etre compris entre 0 et 10 (ou 20?). mais on ne peut en tous cas pas aller en dessous de 1 (ce qui correspond d'ailleurs au reglage de la souris du panneau de configuration de xp). par contre il me semble que les trois entiers du pvParam de spi_setmouse devrait permettre plus de flexibilite.
    qu'est-ce que vous en pensez?
    pour tout dire, moi ce qui m'interesse c'est de ralentir considerablement le curseur, un facteur 100?
    merci de votre avis.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [CSS] Curseur de la souris
    Par Furius dans le forum Mise en page CSS
    Réponses: 8
    Dernier message: 19/11/2005, 10h53
  2. Curseur de la souris
    Par dynobremo dans le forum Composants VCL
    Réponses: 2
    Dernier message: 27/09/2004, 14h26
  3. reposition du curseur de la souris!
    Par bakonu dans le forum Windows
    Réponses: 2
    Dernier message: 09/06/2004, 18h17
  4. [TP][FAQ]Curseur de la souris
    Par nounetmasque dans le forum Turbo Pascal
    Réponses: 5
    Dernier message: 29/06/2003, 23h22
  5. Comment masquer le curseur de la souris ?
    Par benj63 dans le forum C++Builder
    Réponses: 4
    Dernier message: 26/06/2002, 18h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo