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

Windows XP Discussion :

Utilisation de deux souris


Sujet :

Windows XP

  1. #21
    Membre émérite
    Inscrit en
    Avril 2010
    Messages
    1 495
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 1 495
    Points : 2 274
    Points
    2 274
    Par défaut
    Citation Envoyé par chapitre37 Voir le message
    mais tu dis que les données récupérées sont une position dans l'écran, là je ne suis pas totalement d'accord.
    Je dis ça dans le sens que le plan des données c'est l'écran et non pas la surface sur laquelle la souris se déplace.

    Pour usbmonitor, enfin, les sniffers, ils installent en général un driver pour faire les captures, on en revient donc à ce qui est dit plus haut. Maintenant comme il est fait, une analyse des imports de l'exe principal te permettrait de faire ton propre programme et utiliser ledit driver.

    La piste du WM_INPUT, comme ça transmet les données telles qu'elles sont acquises depuis l'interface hid, ça semble intéressant et être le plus simple. Une fois ton ébauche faite, tu peux utilement t'aider de spy++ pour capturer les messages et t'aider dans le développement, et surtout être sûr que les données correspondent à tes attentes et donc pas relatives.

    Edit:

    Regarde aussi ici -> Raw Input
    et là -> RAWMOUSE et notemment MOUSE_MOVE_ABSOLUTE

  2. #22
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2012
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2012
    Messages : 58
    Points : 31
    Points
    31
    Par défaut
    Ne m'y connaissant pas du tout en Delphi, je dois avouer que j'ai assez de mal à réaliser un code similaire pour ce que je cherche à faire.

    De plus, j'ai bien regardé sur Msdn pendant un bout de temps, mais je n'y ai trouvé que des structures. Alors à moins que ça ne soit parce que j'ai le nez dedans depuis trop longtemps, je ne comprends absolument pas quoi faire de tout ça. (Notamment les bouts de code pour gérer les WM_INPUT, qui sont intégrés dans un "case WM_INPUT" sans aucun switch déclaré, ce qui ne compile évidemment pas).

    Pour le moment j'en suis là :

    Unit1.cpp

    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Rid[0].usUsagePage = 1;
    Rid[0].usUsage = 2;
    Rid[0].dwFlags = RIDEV_NOLEGACY;   // adds HID mouse and also ignores legacy mouse messages
    Rid[0].hwndTarget = 0;
    result = RegisterRawInputDevices(Rid, 1, sizeof(Rid[0]));
     
    if(result==0)
    	ShowMessage("Erreur N°"+GetLastError());

    Unit1.h

    Code C++ : 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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    class TForm1 : public TForm
    {
    __published:	// Composants gérés par l'EDI
    	TButton *Button1;
    	TEdit *Edit1;
    	TTimer *Timer1;
    	TEdit *Edit2;
    	void __fastcall Button1Click(TObject *Sender);
    private:	// Déclarations utilisateur
    public:		// Déclarations utilisateur
    	__fastcall TForm1(TComponent* Owner);
     
    	typedef struct tagRAWINPUTDEVICE
    	{
    	  USHORT usUsagePage;
    	  USHORT usUsage;
    	  DWORD  dwFlags;
    	  HWND   hwndTarget;
    	} RAWINPUTDEVICE, *PRAWINPUTDEVICE, *LPRAWINPUTDEVICE;
     
    	typedef struct tagRAWINPUT
    	{
    		RAWINPUTHEADER header;
    		union
    		{
    			RAWMOUSE    mouse;
    			RAWKEYBOARD keyboard;
    			RAWHID      hid;
    		} data;
    	} RAWINPUT, *PRAWINPUT, *LPRAWINPUT;
     
    	typedef struct tagRAWMOUSE
    	{
    		USHORT usFlags;
    		union
    		{
    			ULONG  ulButtons;
    			struct
    			{
    			  USHORT usButtonFlags;
    			  USHORT usButtonData;
    			};
    		};
    		ULONG  ulRawButtons;
    		LONG   lLastX;
    		LONG   lLastY;
    		ULONG  ulExtraInformation;
    	} RAWMOUSE, *PRAWMOUSE, *LPRAWMOUSE;
    };

  3. #23
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 815
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 815
    Points : 13 531
    Points
    13 531
    Par défaut
    Ce ne sont que des fragments de code spécifiques à Raw Input. Ça ne te dispense pas de gérer convenablement ta boucle de messages

  4. #24
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2012
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2012
    Messages : 58
    Points : 31
    Points
    31
    Par défaut
    C'est justement ça le problème ... d'habitude sur msdn pour tout ce qui est fonctions diverses, j'arrive à trouver et à faire ce que je veux, mais là ce qu'ils fournissent, j'ai juste l'impression que ça sert à rien.

    Des fragments de codes spécifiques à RawInput je veux bien, mais à part ça, je ne vois absolument pas comment les gérer ces messages.

    Sur MSDN ils donnent cet exemple :

    Code C++ : 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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    case WM_INPUT: 
    {
        UINT dwSize;
     
        GetRawInputData((HRAWINPUT)lParam, RID_INPUT, NULL, &dwSize, 
                        sizeof(RAWINPUTHEADER));
        LPBYTE lpb = new BYTE[dwSize];
        if (lpb == NULL) 
        {
            return 0;
        } 
     
        if (GetRawInputData((HRAWINPUT)lParam, RID_INPUT, lpb, &dwSize, 
             sizeof(RAWINPUTHEADER)) != dwSize )
             OutputDebugString (TEXT("GetRawInputData does not return correct size !\n")); 
     
        RAWINPUT* raw = (RAWINPUT*)lpb;
     
        if (raw->header.dwType == RIM_TYPEKEYBOARD) 
        {
    		hResult = StringCchPrintf(szTempOutput, STRSAFE_MAX_CCH, TEXT(" Kbd: make=%04x Flags:%04x Reserved:%04x ExtraInformation:%08x, msg=%04x VK=%04x \n"), 
                raw->data.keyboard.MakeCode, 
                raw->data.keyboard.Flags, 
                raw->data.keyboard.Reserved, 
                raw->Data.keyboard.ExtraInformation, 
                raw->data.keyboard.Message, 
                raw->data.keyboard.VKey);
    		if (FAILED(hResult))
    		{
    		// TODO: write error handler
    		}
            OutputDebugString(szTempOutput);
        }
        else if (raw->header.dwType == RIM_TYPEMOUSE) 
        {
    		hResult = StringCchPrintf(szTempOutput, STRSAFE_MAX_CCH, TEXT("Mouse: usFlags=%04x ulButtons=%04x usButtonFlags=%04x usButtonData=%04x ulRawButtons=%04x lLastX=%04x lLastY=%04x ulExtraInformation=%04x\r\n"), 
                raw->data.mouse.usFlags, 
                raw->data.mouse.ulButtons, 
                raw->data.mouse.usButtonFlags, 
                raw->data.mouse.usButtonData, 
                raw->data.mouse.ulRawButtons, 
                raw->data.mouse.lLastX, 
                raw->data.mouse.lLastY, 
                raw->data.mouse.ulExtraInformation);
     
    		if (FAILED(hResult))
    		{
    		// TODO: write error handler
    		}
            OutputDebugString(szTempOutput);
        } 
     
        delete[] lpb; 
        return 0;
    }

    En soi, je veux bien, mais déjà le "case" au début, je vois absolument pas ce qu'il fous là .... d'autant que partout où j'ai cherché pour RawInput, ils semblent tous faire comme ça ... et tout ceux à qui j'ai demandé, me renvoie vers RawInput, cercle sans fin donc.

  5. #25
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 815
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 815
    Points : 13 531
    Points
    13 531
    Par défaut
    Un petit effort... La surcharge de WndProc fait qu'en même partie des bases de la programmation Windows

    En C++, ça doit donner quelque chose comme ceci:

    Code c++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    LRESULT CALLBACK WndProc(HWND hwnd, UINT umsg, WPARAM wparam, LPARAM lparam) {
        switch (umsg) {
     
        case WM_INPUT:
            ...
            return 0;
            break;
     
        default:
            return DefWindowProc(hwnd, umsg, wparam, lparam);
        }
    }

  6. #26
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2012
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2012
    Messages : 58
    Points : 31
    Points
    31
    Par défaut
    On a pas tous la même notion de ce qu'est la base de la programmation. Jusqu'ici j'avais pas eu besoin de faire de la programmation windows, et là pas de bol, j'en ai besoin.

    C'est peut être limpide pour toi mais pas pour moi en tout cas ... Bref, j'ai essayé d'intégrer un bout de code qu'il y a sur Msdn, j'ai réussi à compiler, je fais mon RegisterRawInputDevices lorsque je clique sur un bouton, et une fois que c'est fait je ne peux plus rien faire.

    En gros c'est comme si l'API avait planté, sauf que lorsque je fais "Entrer" ou "Tab", ça reclique sur le bouton ou ça met le curseur dans un des Edit de ma Form.

    Et j'ai bel et bien l'impression le callback de WndProc n'est jamais lancé ...

    Enfin bref, pour moi qui n'y connait rien sur RawInput, c'est juste de la diarrhée.

  7. #27
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 815
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 815
    Points : 13 531
    Points
    13 531
    Par défaut
    Citation Envoyé par chapitre37 Voir le message
    On a pas tous la même notion de ce qu'est la base de la programmation.
    Ton titre de "Développeur informatique" est alors peut être mal choisi

    Je ne suis pas un pro du C++ et ne peux que te conseiller de te tourner maintenant vers le forum dédié à C++ Builder puisqu'il semble que ce soit l'EDI que tu utilises.

  8. #28
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2012
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2012
    Messages : 58
    Points : 31
    Points
    31
    Par défaut
    Être développeur informatique ne sous-entend pas être expert en programmation, quel que soit le langage, la plateforme ou autre, c'est une notion large, littéralement "Développeur Informatique", personne développant sur plateforme informatique, ce que je fais, donc.

    Bref, on est pas là pour savoir qui a la plus grosse, que j'utilise Builder ou non, ma question ne concerne pas une lacune concernant l'IDE, mais simplement comment me servir de RawInput, que j'ai découvert ce matin.

  9. #29
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 815
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 815
    Points : 13 531
    Points
    13 531
    Par défaut
    Tu confirmes ce que je dis; l’appellation est totalement galvaudée

    Je te rappelle que tu te trouves sur le forum relatif à Windows XP. Autant une question concernant l'utilisation de deux souris pouvait (éventuellement) être admise (bien que ce ne soit pas propre à XP), autant des problèmes d'implémentation Raw Input en C++ n'ont rien à y faire !

    Pour rappel:
    Règle 3.2. Postez dans le bon forum

  10. #30
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2012
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2012
    Messages : 58
    Points : 31
    Points
    31
    Par défaut
    A la base le problème concernait bien deux souris (et Windows XP, car je suis sous XP, ça évite de le préciser), mais ayant avancé depuis, j'allais pas recréer un autre topic sur le même sujet, ça m'a paru un peu excessif ...

    Bon, je doute que ça soit le sujet initial, si tu ne veux pas m'aider un peu à comprendre davantage le fonctionnement de RawInput, soit, mais à ce moment là ne lance pas de débat stérile.

  11. #31
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 815
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 815
    Points : 13 531
    Points
    13 531
    Par défaut
    Minnesota et moi t'avons donné des indications, des liens. Je t'ai donné un exemple fonctionnel (bon d'accord en Delphi) et maintenant tu coinces sur son intégration en C++, langage que je ne maîtrise pas. Je ne vais pas inventer !

    Je ne demande pas ta reconnaissance, mais s'il te plaît, ne dis pas que je n'ai pas essayé de t'aider
    (ou alors c'est que j'aurai vraiment foutu en l'air une partie de mon après-midi...)





    Sujet clôt en ce qui me concerne...

  12. #32
    Membre émérite
    Inscrit en
    Avril 2010
    Messages
    1 495
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 1 495
    Points : 2 274
    Points
    2 274
    Par défaut
    De mémoire, la gestion des messages windows sur c++ builder se fait avec la déclaration begin_message_map et end_message_map (=macro =majuscule) dans la class tform de la fenêtre principale. Et en effet, la programmation Windows se base énormément sur les messages, la fonction callback y est d'une grande importance, car c'est sur cette fonction-là du programme que nous rappel windows après lui avoir demandé quelque chose, d'où les cases qui permettent de filtrer les messages que l'on souhaite traiter.

  13. #33
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2012
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2012
    Messages : 58
    Points : 31
    Points
    31
    Par défaut
    Merci pour les infos que vous me donnez, mais j'ai quand même un soucis.

    N'étant qu'en Licence Pro., je n'ai pas non plus un niveau exceptionnel, notamment pour la gestion de RawInput et des messages Windows.

    J'ai lu tout ce que vous m'avez filé, j'ai essayé de les intégrer, j'ai fait mes propres recherches (et croyez-moi, j'en ai fait un paquet !), mais j'ai vraiment l'impression de rien biter du tout, et ça n'est pas qu'une impression.

    Pour le moment j'ai juste :

    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    protected: // déclaration du gestionaire de messages
    	BEGIN_MESSAGE_MAP
    	END_MESSAGE_MAP(TForm)

    Je n'arrive à rien faire d'autre, pas moyen de comprendre comment fonctionne la fonction WndProc ...


    EDIT : A moins que je ne me goure totalement, je pense à peu près avoir compris comment rediriger les messages :

    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    protected: // déclaration du gestionaire de messages
    	void __fastcall TestDeplacementSouris(TMessage &Message);
    	BEGIN_MESSAGE_MAP
    		VCL_MESSAGE_HANDLER(WM_INPUT, TMessage, TestDeplacementSouris)
    	END_MESSAGE_MAP(TForm)

    Et évidemment, une fois ceci effectué, je fais la gestion de messages que je veux dans la fonction, le problème étant qu'à la compilation du code ci-dessus, j'ai une erreur de linker :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [ILINK32 Erreur] Error: '__fastcall TForm1::TestDeplacementSouris(Winapi::Messages::TMessage&)' externe non résolu, référencé depuis D:\DOCUMENTS AND SETTINGS\251204\BUREAU\ESSAI\WIN32\DEBUG\UNIT1.OBJ

  14. #34
    Membre émérite
    Inscrit en
    Avril 2010
    Messages
    1 495
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 1 495
    Points : 2 274
    Points
    2 274
    Par défaut
    Peut-être que cette ébauche t'aidera ?

    Voici la déclaration d'un gestionnaire de messages pour le message WM_INPUT.

    Code C++ : 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
     
    #define WM_INPUT 0x00FF
     
    class TMyControl : public TControl //TControl peut être TForm1
    {
    protected:
        void __fastcall TestDeplacementSouris(TMessage &Message);
    BEGIN_MESSAGE_MAP
      MESSAGE_HANDLER(WM_INPUT, TMessage, TestDeplacementSouris)
    END_MESSAGE_MAP(TControl)
    };
     
    void __fastcall TMyControl::TestDeplacementSouris(TMessage &Message)
    {
      // pour la gestion du message voir -> http://msdn.microsoft.com/en-us/library/windows/desktop/ms645590%28v=vs.85%29.aspx
      // valeur de lParam: Message.lParam
      // valeur de wParam: Message.wParam
     
      TControl::TestDeplacementSouris(Message);
    }

  15. #35
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2012
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2012
    Messages : 58
    Points : 31
    Points
    31
    Par défaut
    Pour mon erreur de linker c'est moi qui suis con ... j'avais déclaré la méthode mais du coup elle était pas intégrée dans le .cpp ...

    Sinon du coup j'ai fait ça dans ma fonction :

    Code C++ : 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
    22
    23
    24
    void __fastcall TForm1::WMInput(TMessage &Message)
    {
    	UINT dwSize;
     
    	GetRawInputData((HRAWINPUT)Message.LParam, RID_INPUT, NULL, &dwSize,
    					sizeof(RAWINPUTHEADER));
    	LPBYTE lpb = new BYTE[dwSize];
     
    	if (GetRawInputData((HRAWINPUT)Message.LParam, RID_INPUT, lpb, &dwSize,
    		 sizeof(RAWINPUTHEADER)) != dwSize )
    		 ShowMessage("GetRawInputData does not return correct size !");
     
    	RAWINPUT* raw = (RAWINPUT*)lpb;
     
    	Edit1->Text=raw->data.mouse.lLastX;
    	Edit2->Text=raw->data.mouse.lLastY;
     
    	if (FAILED(hResult))
    		ShowMessage(GetLastError());
     
    	delete[] lpb;
     
    	TForm1::WMInput(Message);
    }

    Mais en fait (toujours dans l'optique de chercher à vraiment bien comprendre le fonctionnement de tout ce merdier), je ne comprends pas trop comment la fonction est censée être déclenchée, ni quand le message WM_INPUT "apparaît".

    J'ai à peu près compris comment le rediriger, maintenant ça c'est bon, mais le principe de fonctionnement général c'est pas encore ça.

    Je te remercie de ta patience en tout cas, si j'arrive à finaliser ce que je veux faire, vu le niveau de développement de tout ça mis bout à bout avec ce que j'ai déjà fait, je pourrai être fier de mon truc héhé !

  16. #36
    Membre émérite
    Inscrit en
    Avril 2010
    Messages
    1 495
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 1 495
    Points : 2 274
    Points
    2 274
    Par défaut
    Citation Envoyé par chapitre37 Voir le message
    Mais en fait (toujours dans l'optique de chercher à vraiment bien comprendre le fonctionnement de tout ce merdier), je ne comprends pas trop comment la fonction est censée être déclenchée, ni quand le message WM_INPUT "apparaît".
    Le message est envoyé par le système d'exploitation à ton application quand il le décide, du moins quand un contenu est disponible, en fonction de la priorité que tu as définie pour cette même application. Faut voir ça comme un télégramme qui transitera par la fonction que tu as défini, que tu pourras intercepter et analyser. N'hésite pas à expérimenter le programme que je t'ai donné en lien, tu pourras constater par toi même l'ampleur de ce système de communication dans ce système d'exploitation. Pour approfondir le sujet, il te suffit de faire une recherche sur "programmation Windows".

  17. #37
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2012
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2012
    Messages : 58
    Points : 31
    Points
    31
    Par défaut
    Citation Envoyé par minnesota Voir le message
    Le message est envoyé par le système d'exploitation à ton application quand il le décide, du moins quand un contenu est disponible, en fonction de la priorité que tu as définie pour cette même application. Faut voir ça comme un télégramme qui transitera par la fonction que tu as défini, que tu pourras intercepter et analyser. N'hésite pas à expérimenter le programme que je t'ai donné en lien, tu pourras constater par toi même l'ampleur de ce système de communication dans ce système d'exploitation. Pour approfondir le sujet, il te suffit de faire une recherche sur "programmation Windows".
    En résumé :

    J'ai fait pas mal de tests en mode pas à pas, et j'ai bien l'impression que codé comme je l'ai fait, la fonction n'est jamais appelée.
    La variable "Message" a bien une valeur (qui change souvent d'ailleurs) mais j'arrive pas trop à en savoir davantage, du coup la fonction GetRawInputData n'est jamais appelée non plus, donc pas de données à analyser.

    Malgré ton explication, j'ai quand même un peu de mal à saisir le concept, comment "apparaît" le message WM_INPUT ? Qu'entends-tu par le niveau de priorité défini à mon application ?

    Pour ce qu'il me semble avoir compris, le bout de code que tu m'as montré renvoie le message WM_INPUT vers la fonction déclarée juste avant le BEGIN_MESSAGE_MAP dès réception de ce dernier ?

    Et est-ce que c'est gênant que le driver de ma souris essaye de récupérer les mêmes infos que moi (sachant que RawInput est fait pour récupérer les données directement sur le port USB, avant le driver donc si j'ai bien compris) ?

  18. #38
    Membre émérite
    Inscrit en
    Avril 2010
    Messages
    1 495
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 1 495
    Points : 2 274
    Points
    2 274
    Par défaut
    Avant le driver j'en doute fort, en plus c'est une acquisition HID. Je pense que ça permet juste d'accéder à plus de données pertinentes, après faut voir de quel ordre.

    EDIT:

    Mais vu ton avancement, tu devrais peut-être songer à reformuler ta question dans les bons forums, comme je l'ai déjà dit et comme la rappelait Andnotor, dont l'intervention a permis de te réorienter vers une bonne piste, en tout cas plus intéressante que directInput. Moi ça ne me pose pas de problèmes, c'est juste qu'en restant dans cette section, tu passes à côté de réponses intéressantes que tu pourrais obtenir plus rapidement dans les forums adéquats.

  19. #39
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2012
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2012
    Messages : 58
    Points : 31
    Points
    31
    Par défaut
    Bon ben du coup j'ai recréé un sujet dans la partie C++ Builder.

    Si tu souhaite continuer, tu es le bienvenue !

    Je met donc celui-ci en résolu vu que le problème initial n'est plus.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Utilisation de deux versions de gcc sur la même plateforme
    Par Anouschka dans le forum Administration système
    Réponses: 5
    Dernier message: 04/05/2006, 11h32
  2. [C#] utilisation de la souris dans une windows form
    Par dimmak dans le forum Windows Forms
    Réponses: 2
    Dernier message: 26/03/2006, 23h21
  3. Utilisation de la souris en console
    Par Geoff-sk8 dans le forum C
    Réponses: 3
    Dernier message: 16/02/2006, 22h32
  4. [CSS] Utilisation de deux div avec float
    Par Ditch dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 06/10/2005, 15h48
  5. [TP]Utilisation de la souris en haute résolution
    Par Gabi dans le forum Turbo Pascal
    Réponses: 4
    Dernier message: 08/01/2004, 18h46

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