C# SendMessage消息编号的说明?

C# SendMessage消息编号的说明?,c#,winforms,interop,C#,Winforms,Interop,我已经成功地使用Windows SendMessage方法来帮助我在文本编辑器中执行各种操作,但每次我只是复制和粘贴别人建议的代码,我真的不知道这意味着什么。始终有一个神秘的消息编号作为参数。我如何知道这些代码是什么意思,以便我能够真正理解正在发生的事情,并且(希望)在未来更加自给自足?谢谢 最近的例子: using System.Runtime.InteropServices; [DllImport("user32.dll")] static extern int SendMessage(I

我已经成功地使用Windows SendMessage方法来帮助我在文本编辑器中执行各种操作,但每次我只是复制和粘贴别人建议的代码,我真的不知道这意味着什么。始终有一个神秘的消息编号作为参数。我如何知道这些代码是什么意思,以便我能够真正理解正在发生的事情,并且(希望)在未来更加自给自足?谢谢

最近的例子:

using System.Runtime.InteropServices;

[DllImport("user32.dll")]
static extern int SendMessage(IntPtr hWnd, uint wMsg,UIntPtr wParam, IntPtr lParam);

SendMessage(myRichTextBox.Handle, (uint)0x00B6, (UIntPtr)0, (IntPtr)(-1));

这是windows消息代码。
它们是在头文件中定义的,通常可以翻译成不同语言的某种包含

示例:
WM_MOUSEMOVE=&H200
MK_控制=&H8
MK_LBUTTON=&H1
MK_MBUTTON=&H10
MK_RBUTTON=&H2
MK_SHIFT=&H4
MK_XBUTTON1=&H20
MK_XBUTTON2=&H40


Windows中的每条消息都由一个数字表示。在本机代码中使用Windows SDK编码时,这些定义由WM_CHAR、WM_PAINT或LVM_GETCOUNT等定义提供,但这些定义不会传递到.NET framework,因为在大多数情况下,消息由.NET事件(如OnKeyPressed和OnPaint)或方法和属性(如ListView.Items.Count)包装

如果没有包装的事件、属性或方法,或者需要执行更高级别不支持的操作,则需要Windows在.NET framework下使用的消息编号

了解特定数字的实际含义的最佳方法是查看Windows SDK标题并找到该数字的定义。

请尝试以下方法。此工具具有搜索功能,允许您浏览所有已定义的windows邮件。然后,它将为这些值生成正确的C#/VB.Net代码


它也不仅仅限于常量值。它还可以生成结构、函数、函数指针和枚举

也许你会发现这段代码非常有用。它提供了许多常见windows消息的C#枚举。

在我在internet上找到的所有示例中,这一个是最好的,因为它是唯一一个使用System.Runtime.InteropServices显示
的示例。如果没有这个指令,我就无法在c#中使用SendMessage。此页面提供的Windows消息列表也非常有用。我在这里重复这个例子:

using System.Runtime.InteropServices; 

[DllImport("user32.dll")] 
static extern int SendMessage(IntPtr hWnd, uint wMsg,UIntPtr wParam, IntPtr lParam); 

SendMessage(myRichTextBox.Handle, (uint)0x00B6, (UIntPtr)0, (IntPtr)(-1)); 

如果你从某个地方剪切+粘贴,最好也将源代码记入贷方