Messages Windows HWND_BROADCAST

StephRadio Messages postés 13 Date d'inscription mardi 18 décembre 2012 Statut Membre Dernière intervention 18 décembre 2012 - 31 mars 2011 à 15:35
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 1 avril 2011 à 16:13
Bonjour,
Je cherche à envoyer le message message à plusieurs applications, pour cela j'ai trouvé l'utilisation de HWND_BROADCAST, par contre je n'arrive pas à le faire fonctionner, l'application réceptrice ne reçoit du vide
Si quelqu'un sait comment utiliser cela entre plusieurs applications, cela me donnerai un sérieux coup de main.

5 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
1 avril 2011 à 10:00
quel est le code que tu as utilisé ?

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
0
StephRadio Messages postés 13 Date d'inscription mardi 18 décembre 2012 Statut Membre Dernière intervention 18 décembre 2012
1 avril 2011 à 12:30
Voici le code que j'utilise dans le logiciel émetteur. As-tu besoin du code côté receveur ?

Public WM_ENVOI_NUMERIQUE As Long
Public WM_ENVOI_ATOM As Long
Public Envoyer_Atom As Long

'Contante pour envoyer le message sans le nom de l'applicatif
Private Const HWND_BROADCAST As Long = &HFFFF&

Public Sub StartPlayer()
Dim Resultat_Msg As Long
Dim strText As String
Dim i As Long


strText = "StartPP"
'création de l'atom dans la table globale et notification au receveur
Envoyer_Atom = GlobalAddAtom(strText)

Resultat_Msg = SendMessage(HWND_BROADCAST, WM_ENVOI_ATOM, Envoyer_Atom, 0)


End Sub
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
1 avril 2011 à 13:26
WM_ENVOI_NUMERIQUE
WM_ENVOI_ATOM

valorisés où ? (pense RegisterWindowMessage)



Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
0
StephRadio Messages postés 13 Date d'inscription mardi 18 décembre 2012 Statut Membre Dernière intervention 18 décembre 2012
1 avril 2011 à 16:05
voici la suite du code. j'ai repris cela d'une source du site qui fonctionne très bien lorsque je m'adresse à une application

Option Explicit
'Constante qui definit la fonction a executer par le Message Handler de Windows
Private Const GWL_WNDPROC = (-4)

'****Declaration API****
Private Declare Function RegisterWindowMessage Lib "user32" Alias _
"RegisterWindowMessageA" (ByVal lpString As String) As Long
Private Sub Bt_StartManuel_Click()
Call StartPlayer

End Sub

Private Sub Form_Load()
'Declaration to register custom messages
WM_ENVOI_NUMERIQUE = RegisterWindowMessage("WM_ENVOI_NUMERIQUE")
WM_ENVOI_ATOM = RegisterWindowMessage("WM_ENVOI_ATOM")

'On remplace l'adresse de la routine Standard par celle de notre procedure => Capture_Message_Windows
'Cela permet de faire passer les messages Windows dans notre procédure Capture_Message_Windows
'Save_WndProc_adresse, récupère l'adresse de la routine standard Windows
'ATTENTION, NE PAS MODIFIER LE NAME (Form1) DE LA Form1 CAR APPEL DU HANDLE (Me.hwnd)
Save_WndProc_Adresse = SetWindowLong(Me.hWnd, GWL_WNDPROC, AddressOf Capture_Message_Windows)

End Sub

Private Sub Form_Unload(Cancel As Integer)
'Restauration de l'adresse de la procédure standard avant de sortir du programme => C'est très important car risque de plantage Windows
Call SetWindowLong(Me.hWnd, GWL_WNDPROC, Save_WndProc_Adresse)

End Sub

Merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
1 avril 2011 à 16:13
'ATTENTION, NE PAS MODIFIER LE NAME (Form1) DE LA Form1 CAR APPEL DU HANDLE (Me.hwnd)

amusant... (et erroné)

risque de plantage Windows

risque de plantage de l'appli seule...

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
0
Rejoignez-nous