Home Backend Development C#.Net Tutorial How to use SendMessage in C#?

How to use SendMessage in C#?

Jul 03, 2017 pm 05:01 PM
.net

In C#, the driver used by the program is event-driven instead of the original message-driven. Although the events provided by the .net framework are already very rich, the rich messages defined in the previous system have a great impact on the systemProgramming provides a convenient implementation method, so using messages in C# sometimes greatly improves the efficiency of programming.

 1 Define the message

In c#, the message needs to be defined as the original hexadecimal number in the windows system, such as

const int WM_Lbutton = 0x201; //defined Click the message with the left button of the mouse

public const int USER = 0x0400 // It is a user message defined by the windows system


2 Message sending


Message sending It is implemented through the API function SendMessage provided by windows. Its prototype is defined as

 [DllImport("User32.dll",EntryPoint="SendMessage")]
   private static extern int SendMessage(
          int hWnd,   // handle to destination window
          int Msg,    // message
          int wParam, // first message parameter
          int lParam // second message parameter
    );
Copy after login

3 Message acceptance

In C#, any window There is also a message receiving and processing function, which is the defproc function

You can overload this function in the form to process the message

protected override void DefWndProc ( ref System.WinForms.Message m )
{
switch(m.msg)
{
case WM_Lbutton :
 ///string与MFC中的CString的Format函数的使用方法有所不同
 string message = string.Format("收到消息!参数为:{0},{1}",m.wParam,m.lParam);
 MessageBox.Show(message);///显示一个消息框
 break;
default:
 base.DefWndProc(ref m);///调用基类函数处理非自定义消息。
 break;
}
}
Copy after login

In fact, events in C# are also processed through This is achieved by encapsulating system messages. If you do not process the

in the DefWndProc function, then it will be handed over to the system to process the message, and the system will implement the mouse click processing function through the proxy, so you You can intercept messages through the

defproc function. For example, if you want to intercept the click message of a certain button

4 Other message processing methods in C

# In C#, sometimes it is necessary to preprocess the messages of control. For example, if you use owc's spreadsheet control to process Excel files, you don't want users to be able to select

data for editing. , you can block mouse events. At this time, you must intercept the events predefined by the system (this is called subclassing in MFC). You can implement the message through an interface

IMessageFilter provided by C#. filter

public class Form1: System.Windows.Forms.Form,IMessageFilter
{
 const int WM_MOUSEMOVE = 0x200
 public bool PreFilterMessage(ref Message m) 
 {  Keys keyCode = (Keys)(int)m.WParam & Keys.KeyCode; 
   if(m.Msg == m.Msg==WM_MOUSEMOVE) //||m.Msg == WM_LBUTTONDOWN
   {
    //MessageBox.Show("Ignoring Escape...");  
    return true; 
   } 
    return false; 
 }
}
Copy after login

The above is the detailed content of How to use SendMessage in C#?. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Share several .NET open source AI and LLM related project frameworks Share several .NET open source AI and LLM related project frameworks May 06, 2024 pm 04:43 PM

The development of artificial intelligence (AI) technologies is in full swing today, and they have shown great potential and influence in various fields. Today Dayao will share with you 4 .NET open source AI model LLM related project frameworks, hoping to provide you with some reference. https://github.com/YSGStudyHards/DotNetGuide/blob/main/docs/DotNet/DotNetProjectPicks.mdSemanticKernelSemanticKernel is an open source software development kit (SDK) designed to integrate large language models (LLM) such as OpenAI, Azure

What are the employment prospects of C#? What are the employment prospects of C#? Oct 19, 2023 am 11:02 AM

Whether you are a beginner or an experienced professional, mastering C# will pave the way for your career.

.NET performance optimization technology for developers .NET performance optimization technology for developers Sep 12, 2023 am 10:43 AM

If you are a .NET developer, you must be aware of the importance of optimizing functionality and performance in delivering high-quality software. By making expert use of the provided resources and reducing website load times, you not only create a pleasant experience for your users but also reduce infrastructure costs.

Performance differences between Java framework and .NET framework Performance differences between Java framework and .NET framework Jun 03, 2024 am 09:19 AM

In terms of high-concurrency request processing, .NETASP.NETCoreWebAPI performs better than JavaSpringMVC. The reasons include: AOT early compilation, which reduces startup time; more refined memory management, where developers are responsible for allocating and releasing object memory.

C# .NET Interview Questions & Answers: Level Up Your Expertise C# .NET Interview Questions & Answers: Level Up Your Expertise Apr 07, 2025 am 12:01 AM

C#.NET interview questions and answers include basic knowledge, core concepts, and advanced usage. 1) Basic knowledge: C# is an object-oriented language developed by Microsoft and is mainly used in the .NET framework. 2) Core concepts: Delegation and events allow dynamic binding methods, and LINQ provides powerful query functions. 3) Advanced usage: Asynchronous programming improves responsiveness, and expression trees are used for dynamic code construction.

C# .NET: Exploring Core Concepts and Programming Fundamentals C# .NET: Exploring Core Concepts and Programming Fundamentals Apr 10, 2025 am 09:32 AM

C# is a modern, object-oriented programming language developed by Microsoft and as part of the .NET framework. 1.C# supports object-oriented programming (OOP), including encapsulation, inheritance and polymorphism. 2. Asynchronous programming in C# is implemented through async and await keywords to improve application responsiveness. 3. Use LINQ to process data collections concisely. 4. Common errors include null reference exceptions and index out-of-range exceptions. Debugging skills include using a debugger and exception handling. 5. Performance optimization includes using StringBuilder and avoiding unnecessary packing and unboxing.

From Web to Desktop: The Versatility of C# .NET From Web to Desktop: The Versatility of C# .NET Apr 15, 2025 am 12:07 AM

C#.NETisversatileforbothwebanddesktopdevelopment.1)Forweb,useASP.NETfordynamicapplications.2)Fordesktop,employWindowsFormsorWPFforrichinterfaces.3)UseXamarinforcross-platformdevelopment,enablingcodesharingacrossWindows,macOS,Linux,andmobiledevices.

Advanced C# .NET Tutorial: Ace Your Next Senior Developer Interview Advanced C# .NET Tutorial: Ace Your Next Senior Developer Interview Apr 08, 2025 am 12:06 AM

Interview with C# senior developer requires mastering core knowledge such as asynchronous programming, LINQ, and internal working principles of .NET frameworks. 1. Asynchronous programming simplifies operations through async and await to improve application responsiveness. 2.LINQ operates data in SQL style and pay attention to performance. 3. The CLR of the NET framework manages memory, and garbage collection needs to be used with caution.

See all articles