Benutzer mit den meisten Antworten
in Excel HWND_BROADCAST-Messages empfangen

Frage
-
Hallo,
ich habe eine "Callback"-funktion für Broadcast-Messages geschrieben.
Diese sendet zwar eine Broadcast-Message, empfängt aber keine.
Als Quellen habe ich folgende Links benutzt:
http://support.microsoft.com/kb/509043/de"]http://support.microsoft.com/kb/509043/de
http://www.shadoware.de/vb/tutorials/winmessages.html"]http://www.shadoware.de/vb/tutorials/winmessages.html
http://msdn.microsoft.com/en-us/library/ff468870(VS.85).aspx"]http://msdn.microsoft.com/en-us/library/ff468870(VS.85).aspxExcel-VBA Funktion zum empfangen:
Public Function WaitForBroadcastCallback(ByVal SendWinMessage As Long, ByVal wParam As Long, ByVal lParam As Long, ByVal WaitForWinMessage As Long, ByVal TimeOutSeconds As Long) As msg Dim tMsg As msg Dim EndTime EndTime = Now + TimeSerial(0, 0, TimeOutSeconds) SendMessage HWND_BROADCAST, SendWinMessage, wParam, lParam Do WaitMessage If PeekMessage(tMsg, 0, 0, 0, PM_REMOVE) Then If tMsg.message = WaitForWinMessage Then Exit Do End If TranslateMessage tMsg DispatchMessage tMsg End If If (Now >= EndTime) Then Exit Do DoEvents Loop WaitForBroadcastCallback = tMsg End Function
Excel-Funktion zum Senden
Public Function SendBroadcastMessage(ByVal WinMessage As Long, ByVal wParam As Long, ByVal lParam As Long) As Long Dim ergebnis As Long ergebnis = SendMessage(HWND_BROADCAST, WinMessage, lParam, lParam) SendBroadcastMessage = ergebnis End Function
Eigenartig ist, dass Excel-VBA zwar Broadcast-Messages senden kann, wohl aber nicht empfangen?!
Denn das Programm, mit dem ich kommunizieren will empfängt die Broadcast.Ich habe mal mit SPY++ geschaut.
Excel selber empfängt die Broadcast-Messages,
die kommen nur nicht im PeekMessage an?!Gruß Mario
- Verschoben Robert BreitenhoferModerator Montag, 22. März 2010 12:38 Visual Basic (Von:Microsoft Office System)
- Verschoben Robert BreitenhoferModerator Donnerstag, 10. Juni 2010 15:08 VB Klassik (aus:Visual Basic (ab Version 2002 / .NET))
Antworten
-
Hallo Mario,
ich vermute Dein PeekMessage kommt zu spät, da hat die Messagepump von Excel bereits die Nachricht aus der Nachrichtenkette entfernt und verarbeitet hat. Um Nachrichten von bestehenden Fenstern zu belauschen arbeitet man üblicherweise mit Subclassing.
Thorsten Dörfler
Microsoft MVP Visual Basic- Als Antwort vorgeschlagen Thorsten DörflerModerator Dienstag, 23. März 2010 10:36
- Als Antwort markiert Robert BreitenhoferModerator Donnerstag, 10. Juni 2010 15:07
Alle Antworten
-
Hallo Mario,
ich vermute Dein PeekMessage kommt zu spät, da hat die Messagepump von Excel bereits die Nachricht aus der Nachrichtenkette entfernt und verarbeitet hat. Um Nachrichten von bestehenden Fenstern zu belauschen arbeitet man üblicherweise mit Subclassing.
Thorsten Dörfler
Microsoft MVP Visual Basic- Als Antwort vorgeschlagen Thorsten DörflerModerator Dienstag, 23. März 2010 10:36
- Als Antwort markiert Robert BreitenhoferModerator Donnerstag, 10. Juni 2010 15:07