c # - Gentag Windows-beskeder i Winforms

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg vil gerne gentage sendte Windows-beskeder til min winforms ansøgning.
Nu har jeg klasse implementering 'IMessageFilter', som gemmer de valgte meddelelser (WM \_KEYDOWN, WM \_LBUTTONDOWN, etc ...) til listen.


På tasten 'Pause/Break' kopierer jeg listen over meddelelser, rydder originalliste og sender beskederne igen.


I mit testprojekt er der kun en formular med et menupunkt, en fane og en richtextbox. HWnd-kontrollerne er de samme under opbevaring og gentagelse af meddelelser.


Alt fungerer fint, men de afsendende meddelelser har ikke effekt:/.


Prøvekode:


[System.Runtime.InteropServices.DllImport( "user32" )]
public static extern int SendMessage( IntPtr hwnd, int msg, IntPtr wparam, IntPtr lparam );

// ... in some method ...
SendMessage( msg.HWnd, msg.Msg, msg.WParam, msg.LParam );


Det ser for nemt ud, men ved ikke, hvor det kan være problem.

Bedste reference


Har du stadig beskedfilteret? Ville det ikke forstyrre at sende beskederne? En anden mulighed kan være, at den pågældende besked ikke skal sendes, men bogføres. Eller du kan muligvis sende beskeden fra den korrekte tråd til målvinduet.