如何使用SendMessage / PostMessage函数?

时间:2012-02-02 17:30:53

标签: c# sendmessage postmessage

我想将这些消息发送到应用程序:

<00010> 00830BB8 S WM_GETDLGCODE
<00011> 00830BB8 R WM_GETDLGCODE fuDlgCode:DLGC_WANTARROWS
<00012> 00830BB8 P WM_PAINT hdc:00000000
<00013> 00830BB8 S WM_ERASEBKGND hdc:DD012964
<00014> 00830BB8 R WM_ERASEBKGND fErased:True
<00015> 00830BB8 P WM_TIMER wTimerID:1 tmprc:00000000
<00016> 00830BB8 S WM_GETDLGCODE
<00017> 00830BB8 R WM_GETDLGCODE fuDlgCode:DLGC_WANTARROWS
<00018> 00830BB8 S WM_GETDLGCODE
<00019> 00830BB8 R WM_GETDLGCODE fuDlgCode:DLGC_WANTARROWS
<00020> 00830BB8 P WM_PAINT hdc:00000000
<00021> 00830BB8 S WM_ERASEBKGND hdc:7601294E
<00022> 00830BB8 R WM_ERASEBKGND fErased:True

这些来自Spy ++。 如何使用C#?

使用SendMessage / PostMessage函数发送

编辑.. 谢谢你们的回复! 我解决了我的问题,再次感谢!

2 个答案:

答案 0 :(得分:1)

我尝试将密钥发送到应用程序,并使用Spy ++查看消息。 具体来说,我想将箭头键发送到应用程序。从Spy ++中,我看到发送了上述消息。在我尝试了所有内容之后,我发送了以下消息:

PostMessage(handle, WM_KEYDOWN, (int)Keys.Down, 0x00140001);
PostMessage(handle, WM_KEYUP, (int)Keys.Down, 0xC0140001);

现在正常运作!谢谢你们!

答案 1 :(得分:0)

您无法发送与绘制窗口相关的消息。只有系统才能发送它们。如果您需要强制重新绘制,则只需调用InvalidateRect。

您可以成功发布的计时器消息。

您可能不需要发送WM_GETDLGCODE消息,因为它们没有副作用。