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 !

Sujet : Télécommande et Interception des messages d'une fenetre [ Windows / API ] (Fraggy)

vendredi 22 août 2008 à 01:17:17 | Télécommande et Interception des messages d'une fenetre

Fraggy


Bonjour à tous,

Je cherche une méthode pour intercepter les messages que ma télécommande (port USB) envoie à une application externe.
Le but étant de bloquer le message initial et de remplacer le message via l'API SendMessage.
- Je récupère sont hWnd sans problème. (dans ma var : mhXBMC_hWnd)
- Je parviens a envoyer via SendMessage
- Je ne parviens pas a intercepter et annuler le message initial.

On m'a dit qu'il fallait faire un Hook, mais je ne maitrise pas du tout et j'aurais souhaité une aide de votre part.

Mes API sont déclarées :
Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _
            (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Public Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" _
            (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

Public Const GWL_WNDPROC = (-4)
Public PrevProc As Long

Form_Load :
PrevProc = SetWindowLong(Me.hWnd, GWL_WNDPROC, AddressOf MyWndProc)
Form_Unload :
SetWindowLong Me.hWnd, GWL_WNDPROC, PrevProc

Public Function MyWndProc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

On Error Resume Next
Dim retVal As Long

    '// Interception des messages
    Select Case Msg
        '// On intercepte WM_KEYDOWN
        Case WM_KEYDOWN
            '//Intercepter et remplacer le message initial
        Case WM_KEYUP
            '//Intercepter et remplacer le message initial        
        Case Else 
            '// Intercepter autre ?
    End Select
   
    '// On demande que OldWndProc gère les messages courants
    '// tels que les clicks,les Load, et autres...
    retVal = CallWindowProc(OldWndProc, hwnd, Msg, wParam, lParam)
   
    '// Retourne la valeur du traitement de OldWndProc à Windows
    MyWndProc = retVal
End Function

Si je lance ca, je perd la main de mon application VB6 et je dois killer via Task Manager.
Comment dès lors, intercepter les messages de mon autre fenetre ?
(J'espère que j'ai été clair dans ma demande)

D'avance merci pour votre aide.


dimanche 24 août 2008 à 17:09:24 | Re : Télécommande et Interception des messages d'une fenetre

Fraggy

Je suis étonné que personne n'ai encore répondu.
Ceci dit, je vais être plus précis :

Est-il possible de hooker une fenêtre autre que mon appli et de d'intercepter tout les messages qui transitent ?
Dans le même régistre, est-il possible de hooker une fenêtre qui utilise DirectInput et de recevoir tout ses messages ?

Un petit exemple serait fortement apprécié.
Merci d'avance, à ceux qui répondront.


Fraggy.

mercredi 3 septembre 2008 à 05:18:20 | Re : Télécommande et Interception des messages d'une fenetre

Renfield

Administrateur CodeS-SourceS
te faut une dll pour hook sur hWnd d'une appli externe.

voir http://www.cppfrance.com/codes/HOOK-DLL-HOOK-FACILE-VB6_41774.aspx

pour te simplifier la vie.

mercredi 3 septembre 2008 à 22:01:49 | Re : Télécommande et Interception des messages d'une fenetre

Fraggy

Merci Rey, pour ta réponse.
Malheureusement dans cette source, il n'y a pas la DLL.
Comme j'ai pas C++, je ne peux pas la compiler moi-même :/

Tu pourrais me la faire parvenir pour que je teste ça ?



Cette discussion est classé dans : long, messages, hwnd, intercepter, byval


Répondre à ce message

Sujets en rapport avec ce message

transparence d'une fenêtre [ par bultez ] Bonjour à toutes et à tous,    je ne parviens pas à récupérer la transparence de la fenêtre en cours.    ( la mettre, ça baigne, la relire non )    j' Déplacement aléatoire d'une Form dans l'écran [ par gozzer ] Bonjour,Je ne suis pas du tout aguerri en programmation sous VB mais j'ai déjà réussi à écrire quelques lignes qui me permettent d'afficher une Image Couleur de fond d'un contrôle slider [ par Leo_Robotic_Passion ] Bonjour a tous Quelqu'un peut me dire dans un 1er temps si il y a un incon GetWindowTextA [ par romainvv ] Bonjour,Je finalise mon projet et je rencontre une difficulté. Mon application doit etre sensible au fenetre qui ont le focus.J'aimerais donc que le p Lister les Handles des applications ouvertes [ par dedenet2 ] Bonjour,Je cherche à faire fonctionner un programme qui liste les handles de toutes les applications ouvertes.N'etant pas spécialistes des "API" ,je c clipcursor sous vb 2008 [ par aldrac ] Bonjour, je débute pardonné moi!j'ai un petit prog qui tourne très bien en vb6,mais je voudrais le rajouter a mon projet actuel qui lui est sous vb 20 Selection d'un repertoir [ par calitoli ] Bonjour à tous,J'ai utilisé le code ci-dessous pour selectionner un repertoir. Et comme erreur obtenu lorsque je lance mon application: "Can't find pr Api dans Visual Studio 2008 ? [ par Solher ] Salut !J'ai un problème avec le Api dans Visual Studio 2008.En fait j'ai copié un code pour modifier mon form en rectangle avec les bords arrondis.Dan probleme avec api [ par eyeofcobra ] salut à tous et à toutes j'ai essayé ce code pour faire un zoom sur une image sur excel mais j'ai toujours un soucis avec une ligne du programme et j' 3 façons de récupérer l'adresse d'un dossier spécial de windows [ par candyraton ] Bonjour,J'ai relever 3 façon de faire;Y en a t'il une mieux que l'autre?Marche t'elles toutes sur tout les windows?1):  cible = Programs & "\" & filen


Nos sponsors

Sondage...

CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, 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,281 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é.