Sends the specified message to a window or windows. 

It uses P/Invoke  that allows you to access structs, callbacks, and functions in unmanaged libraries from your managed code. 

## SendMessage function
The SendMessage function calls the window procedure for the specified window and does not return until the window procedure has processed the message.
```cs
SendMessage (int hwnd, int wMsg, int wParam, int lParam); 
```
### Parameters
#### hWnd
Type: HWND

> A handle to the window whose window procedure will receive the message. If this parameter is HWND_BROADCAST ((HWND)0xffff), the message is sent to all top-level windows in the system, including disabled or invisible unowned windows, overlapped windows, and pop-up windows; but the message is not sent to child windows.

Message sending is subject to UIPI. The thread of a process can send messages only to message queues of threads in processes of lesser or equal integrity level.

#### Msg
Type: UINT

> The message to be sent.
For lists of the system-provided messages, see System-Defined Messages.

#### wParam
Type: WPARAM
> Additional message-specific information.

#### lParam
Type: LPARAM
> Additional message-specific information.


Here is the implementation of it using C# with PInvoke
 
```cs
//Send Message API Class
//send Message Win32 Ap interop 
     
using System.Runtime.InteropServices; 

namespace KillerCodes.win32.API 
{ 

    public static class WIN32_API 
    { 

        [DllImport("user32.dll", EntryPoint="SendMessageW")] 
        private static extern int SendMessage (int hwnd, int wMsg, int wParam, int lParam); 

        [DllImport("user32.dll", EntryPoint = "SendMessageW")] 
        private static extern int SendMessageFL(int hwnd, int wMsg, int wParam, string lParam); 

        [DllImport("user32.dll", EntryPoint = "SendMessageW")] 
        private static extern int SendMessageSD(int hwnd, int wMsg, string wParam, int lParam); 

        public enum WM : int 
        { 
            WM_ACTIVATE = 0x6, 
            WM_ACTIVATEAPP = 0x1C, 
            WM_ADSPROP_NOTIFY_APPLY = (WM_USER + 1104), 
            WM_USER = 0x400, 
            WM_ADSPROP_NOTIFY_CHANGE = (WM_USER + 1103), 
            WM_ADSPROP_NOTIFY_EXIT = (WM_USER + 1107), 
            WM_ADSPROP_NOTIFY_FOREGROUND = (WM_USER + 1106), 
            WM_ADSPROP_NOTIFY_PAGEHWND = (WM_USER + 1102), 
            WM_ADSPROP_NOTIFY_PAGEINIT = (WM_USER + 1101), 
            WM_ADSPROP_NOTIFY_SETFOCUS = (WM_USER + 1105), 
            WM_ADSPROP_NOTIFY_SHOW_ERROR_DIALOG = (WM_USER + 1111), 
            WM_AFXFIRST = 0x360, 
            WM_AFXLAST = 0x37F, 
            WM_APP = 0x8000, 
            WM_APPCOMMAND = 0x319, 
            WM_ASKCBFORMATNAME = 0x30C, 
            WM_CANCELJOURNAL = 0x4B, 
            WM_CANCELMODE = 0x1F, 
            WM_CAP_ABORT = (WM_CAP_START+ 69), 
            WM_CAP_START = WM_USER, 
            WM_CAP_DLG_VIDEOCOMPRESSION = (WM_CAP_START+ 46), 
            WM_CAP_DLG_VIDEODISPLAY = (WM_CAP_START+ 43), 
            WM_CAP_DLG_VIDEOFORMAT = (WM_CAP_START+ 41), 
            WM_CAP_DLG_VIDEOSOURCE = (WM_CAP_START+ 42), 
            WM_CAP_DRIVER_CONNECT = (WM_CAP_START+ 10), 
            WM_CAP_DRIVER_DISCONNECT = (WM_CAP_START+ 11), 
            WM_CAP_DRIVER_GET_CAPS = (WM_CAP_START+ 14), 
            WM_CAP_DRIVER_GET_NAMEA = (WM_CAP_START+ 12), 
            WM_CAP_DRIVER_GET_NAMEW = (WM_CAP_UNICODE_START+ 12), 
            WM_CAP_UNICODE_START = WM_USER+100, 
            WM_CAP_DRIVER_GET_VERSIONA = (WM_CAP_START+ 13), 
            WM_CAP_DRIVER_GET_VERSIONW = (WM_CAP_UNICODE_START+ 13), 
            WM_CAP_EDIT_COPY = (WM_CAP_START+ 30), 
            WM_CAP_END = WM_CAP_UNICODE_END, 
            WM_CAP_UNICODE_END = WM_CAP_PAL_SAVEW, 
            WM_CAP_FILE_ALLOCATE = (WM_CAP_START+ 22), 
            WM_CAP_FILE_GET_CAPTURE_FILEA = (WM_CAP_START+ 21), 
            WM_CAP_FILE_GET_CAPTURE_FILEW = (WM_CAP_UNICODE_START+ 21), 
            WM_CAP_FILE_SAVEASA = (WM_CAP_START+ 23), 
            WM_CAP_FILE_SAVEASW = (WM_CAP_UNICODE_START+ 23), 
            WM_CAP_FILE_SAVEDIBA = (WM_CAP_START+ 25), 
            WM_CAP_FILE_SAVEDIBW = (WM_CAP_UNICODE_START+ 25), 
            WM_CAP_FILE_SET_CAPTURE_FILEA = (WM_CAP_START+ 20), 
            WM_CAP_FILE_SET_CAPTURE_FILEW = (WM_CAP_UNICODE_START+ 20), 
            WM_CAP_FILE_SET_INFOCHUNK = (WM_CAP_START+ 24), 
            WM_CAP_GET_AUDIOFORMAT = (WM_CAP_START+ 36), 
            WM_CAP_GET_CAPSTREAMPTR = (WM_CAP_START+ 1), 
            WM_CAP_GET_MCI_DEVICEA = (WM_CAP_START+ 67), 
            WM_CAP_GET_MCI_DEVICEW = (WM_CAP_UNICODE_START+ 67), 
            WM_CAP_GET_SEQUENCE_SETUP = (WM_CAP_START+ 65), 
            WM_CAP_GET_STATUS = (WM_CAP_START+ 54), 
            WM_CAP_GET_USER_DATA = (WM_CAP_START+ 8), 
            WM_CAP_GET_VIDEOFORMAT = (WM_CAP_START+ 44), 
            WM_CAP_GRAB_FRAME = (WM_CAP_START+ 60), 
            WM_CAP_GRAB_FRAME_NOSTOP = (WM_CAP_START+ 61), 
            WM_CAP_PAL_AUTOCREATE = (WM_CAP_START+ 83), 
            WM_CAP_PAL_MANUALCREATE = (WM_CAP_START+ 84), 
            WM_CAP_PAL_OPENA = (WM_CAP_START+ 80), 
            WM_CAP_PAL_OPENW = (WM_CAP_UNICODE_START+ 80), 
            WM_CAP_PAL_PASTE = (WM_CAP_START+ 82), 
            WM_CAP_PAL_SAVEA = (WM_CAP_START+ 81), 
            WM_CAP_PAL_SAVEW = (WM_CAP_UNICODE_START+ 81), 
            WM_CAP_SEQUENCE = (WM_CAP_START+ 62), 
            WM_CAP_SEQUENCE_NOFILE = (WM_CAP_START+ 63), 
            WM_CAP_SET_AUDIOFORMAT = (WM_CAP_START+ 35), 
            WM_CAP_SET_CALLBACK_CAPCONTROL = (WM_CAP_START+ 85), 
            WM_CAP_SET_CALLBACK_ERRORA = (WM_CAP_START+ 2), 
            WM_CAP_SET_CALLBACK_ERRORW = (WM_CAP_UNICODE_START+ 2), 
            WM_CAP_SET_CALLBACK_FRAME = (WM_CAP_START+ 5), 
            WM_CAP_SET_CALLBACK_STATUSA = (WM_CAP_START+ 3), 
            WM_CAP_SET_CALLBACK_STATUSW = (WM_CAP_UNICODE_START+ 3), 
            WM_CAP_SET_CALLBACK_VIDEOSTREAM = (WM_CAP_START+ 6), 
            WM_CAP_SET_CALLBACK_WAVESTREAM = (WM_CAP_START+ 7), 
            WM_CAP_SET_CALLBACK_YIELD = (WM_CAP_START+ 4), 
            WM_CAP_SET_MCI_DEVICEA = (WM_CAP_START+ 66), 
            WM_CAP_SET_MCI_DEVICEW = (WM_CAP_UNICODE_START+ 66), 
            WM_CAP_SET_OVERLAY = (WM_CAP_START+ 51), 
            WM_CAP_SET_PREVIEW = (WM_CAP_START+ 50), 
            WM_CAP_SET_PREVIEWRATE = (WM_CAP_START+ 52), 
            WM_CAP_SET_SCALE = (WM_CAP_START+ 53), 
            WM_CAP_SET_SCROLL = (WM_CAP_START+ 55), 
            WM_CAP_SET_SEQUENCE_SETUP = (WM_CAP_START+ 64), 
            WM_CAP_SET_USER_DATA = (WM_CAP_START+ 9), 
            WM_CAP_SET_VIDEOFORMAT = (WM_CAP_START+ 45), 
            WM_CAP_SINGLE_FRAME = (WM_CAP_START+ 72), 
            WM_CAP_SINGLE_FRAME_CLOSE = (WM_CAP_START+ 71), 
            WM_CAP_SINGLE_FRAME_OPEN = (WM_CAP_START+ 70), 
            WM_CAP_STOP = (WM_CAP_START+ 68), 
            WM_CAPTURECHANGED = 0x215, 
            WM_CHANGECBCHAIN = 0x30D, 
            WM_CHANGEUISTATE = 0x127, 
            WM_CHAR = 0x102, 
            WM_CHARTOITEM = 0x2F, 
            WM_CHOOSEFONT_GETLOGFONT = (WM_USER + 1), 
            WM_CHOOSEFONT_SETFLAGS = (WM_USER + 102), 
            WM_CHOOSEFONT_SETLOGFONT = (WM_USER + 101), 
            WM_CLEAR = 0x303, 
            WM_CLOSE = 0x10, 
            WM_COMMAND = 0x111, 
            WM_COMMNOTIFY = 0x44, 
            WM_COMPACTING = 0x41, 
            WM_COMPAREITEM = 0x39, 
            WM_CONTEXTMENU = 0x7B, 
            WM_CONVERTREQUEST = 0x10A, 
            WM_CONVERTREQUESTEX = 0x108, 
            WM_CONVERTRESULT = 0x10B, 
            WM_COPY = 0x301, 
            WM_COPYDATA = 0x4A, 
            WM_CPL_LAUNCH = (WM_USER+1000), 
            WM_CPL_LAUNCHED = (WM_USER+1001), 
            WM_CREATE = 0x1, 
            WM_CTLCOLOR = 0x19, 
            WM_CTLCOLORBTN = 0x135, 
            WM_CTLCOLORDLG = 0x136, 
            WM_CTLCOLOREDIT = 0x133, 
            WM_CTLCOLORLISTBOX = 0x134, 
            WM_CTLCOLORMSGBOX = 0x132, 
            WM_CTLCOLORSCROLLBAR = 0x137, 
            WM_CTLCOLORSTATIC = 0x138, 
            WM_CUT = 0x300, 
            WM_DDE_FIRST = 0x3E0, 
            WM_DDE_ACK = (WM_DDE_FIRST + 4), 
            WM_DDE_ADVISE = (WM_DDE_FIRST + 2), 
            WM_DDE_DATA = (WM_DDE_FIRST + 5), 
            WM_DDE_EXECUTE = (WM_DDE_FIRST + 8), 
            WM_DDE_INITIATE = (WM_DDE_FIRST), 
            WM_DDE_LAST = (WM_DDE_FIRST + 8), 
            WM_DDE_POKE = (WM_DDE_FIRST + 7), 
            WM_DDE_REQUEST = (WM_DDE_FIRST + 6), 
            WM_DDE_TERMINATE = (WM_DDE_FIRST + 1), 
            WM_DDE_UNADVISE = (WM_DDE_FIRST + 3), 
            WM_DEADCHAR = 0x103, 
            WM_DELETEITEM = 0x2D, 
            WM_DESTROY = 0x2, 
            WM_DESTROYCLIPBOARD = 0x307, 
            WM_DEVICECHANGE = 0x219, 
            WM_DEVMODECHANGE = 0x1B, 
            WM_DISPLAYCHANGE = 0x7E, 
            WM_DRAWCLIPBOARD = 0x308, 
            WM_DRAWITEM = 0x2B, 
            WM_DROPFILES = 0x233, 
            WM_ENABLE = 0xA, 
            WM_ENDSESSION = 0x16, 
            WM_ENTERIDLE = 0x121, 
            WM_ENTERMENULOOP = 0x211, 
            WM_ENTERSIZEMOVE = 0x231, 
            WM_ERASEBKGND = 0x14, 
            WM_EXITMENULOOP = 0x212, 
            WM_EXITSIZEMOVE = 0x232, 
            WM_FONTCHANGE = 0x1D, 
            WM_FORWARDMSG = 0x37F, 
            WM_GETDLGCODE = 0x87, 
            WM_GETFONT = 0x31, 
            WM_GETHOTKEY = 0x33, 
            WM_GETICON = 0x7F, 
            WM_GETMINMAXINFO = 0x24, 
            WM_GETOBJECT = 0x3D, 
            WM_GETTEXT = 0xD, 
            WM_GETTEXTLENGTH = 0xE, 
            WM_HANDHELDFIRST = 0x358, 
            WM_HANDHELDLAST = 0x35F, 
            WM_HELP = 0x53, 
            WM_HOTKEY = 0x312, 
            WM_HSCROLL = 0x114, 
            WM_HSCROLLCLIPBOARD = 0x30E, 
            WM_ICONERASEBKGND = 0x27, 
            WM_IME_CHAR = 0x286, 
            WM_IME_COMPOSITION = 0x10F, 
            WM_IME_COMPOSITIONFULL = 0x284, 
            WM_IME_CONTROL = 0x283, 
            WM_IME_ENDCOMPOSITION = 0x10E, 
            WM_IME_KEYDOWN = 0x290, 
            WM_IME_KEYLAST = 0x10F, 
            WM_IME_KEYUP = 0x291, 
            WM_IME_NOTIFY = 0x282, 
            WM_IME_REPORT = 0x280, 
            WM_IME_REQUEST = 0x288, 
            WM_IME_SELECT = 0x285, 
            WM_IME_SETCONTEXT = 0x281, 
            WM_IME_STARTCOMPOSITION = 0x10D, 
            WM_IMEKEYDOWN = 0x290, 
            WM_IMEKEYUP = 0x291, 
            WM_INITDIALOG = 0x110, 
            WM_INITMENU = 0x116, 
            WM_INITMENUPOPUP = 0x117, 
            WM_INPUTLANGCHANGE = 0x51, 
            WM_INPUTLANGCHANGEREQUEST = 0x50, 
            WM_INTERIM = 0x10C, 
            WM_KEYDOWN = 0x100, 
            WM_KEYFIRST = 0x100, 
            WM_KEYLAST = 0x108, 
            WM_KEYUP = 0x101, 
            WM_KILLFOCUS = 0x8, 
            WM_LBUTTONDBLCLK = 0x203, 
            WM_LBUTTONDOWN = 0x201, 
            WM_LBUTTONUP = 0x202, 
            WM_MBUTTONDBLCLK = 0x209, 
            WM_MBUTTONDOWN = 0x207, 
            WM_MBUTTONUP = 0x208, 
            WM_MDIACTIVATE = 0x222, 
            WM_MDICASCADE = 0x227, 
            WM_MDICREATE = 0x220, 
            WM_MDIDESTROY = 0x221, 
            WM_MDIGETACTIVE = 0x229, 
            WM_MDIICONARRANGE = 0x228, 
            WM_MDIMAXIMIZE = 0x225, 
            WM_MDINEXT = 0x224, 
            WM_MDIREFRESHMENU = 0x234, 
            WM_MDIRESTORE = 0x223, 
            WM_MDISETMENU = 0x230, 
            WM_MDITILE = 0x226, 
            WM_MEASUREITEM = 0x2C, 
            WM_MENUCHAR = 0x120, 
            WM_MENUCOMMAND = 0x126, 
            WM_MENUDRAG = 0x123, 
            WM_MENUGETOBJECT = 0x124, 
            WM_MENURBUTTONUP = 0x122, 
            WM_MENUSELECT = 0x11F, 
            WM_MOUSEACTIVATE = 0x21, 
            WM_MOUSEFIRST = 0x200, 
            WM_MOUSEHOVER = 0x2A1, 
            WM_MOUSELAST = 0x209, 
            WM_MOUSELEAVE = 0x2A3, 
            WM_MOUSEMOVE = 0x200, 
            WM_MOUSEWHEEL = 0x20A, 
            WM_MOVE = 0x3, 
            WM_MOVING = 0x216, 
            WM_NCACTIVATE = 0x86, 
            WM_NCCALCSIZE = 0x83, 
            WM_NCCREATE = 0x81, 
            WM_NCDESTROY = 0x82, 
            WM_NCHITTEST = 0x84, 
            WM_NCLBUTTONDBLCLK = 0xA3, 
            WM_NCLBUTTONDOWN = 0xA1, 
            WM_NCLBUTTONUP = 0xA2, 
            WM_NCMBUTTONDBLCLK = 0xA9, 
            WM_NCMBUTTONDOWN = 0xA7, 
            WM_NCMBUTTONUP = 0xA8, 
            WM_NCMOUSEHOVER = 0x2A0, 
            WM_NCMOUSELEAVE = 0x2A2, 
            WM_NCMOUSEMOVE = 0xA0, 
            WM_NCPAINT = 0x85, 
            WM_NCRBUTTONDBLCLK = 0xA6, 
            WM_NCRBUTTONDOWN = 0xA4, 
            WM_NCRBUTTONUP = 0xA5, 
            WM_NCXBUTTONDOWN = 0xAB, 
            WM_NCXBUTTONUP = 0xAC, 
            WM_NEXTDLGCTL = 0x28, 
            WM_NEXTMENU = 0x213, 
            WM_NOTIFY = 0x4E, 
            WM_NOTIFYFORMAT = 0x55, 
            WM_NULL = 0x0, 
            WM_OTHERWINDOWCREATED = 0x42, 
            WM_OTHERWINDOWDESTROYED = 0x43, 
            WM_PAINT = 0xF, 
            WM_PAINTCLIPBOARD = 0x309, 
            WM_PAINTICON = 0x26, 
            WM_PALETTECHANGED = 0x311, 
            WM_PALETTEISCHANGING = 0x310, 
            WM_PARENTNOTIFY = 0x210, 
            WM_PASTE = 0x302, 
            WM_PENWINFIRST = 0x380, 
            WM_PENWINLAST = 0x38F, 
            WM_POWER = 0x48, 
            WM_POWERBROADCAST = 0x218, 
            WM_PRINT = 0x317, 
            WM_PRINTCLIENT = 0x318, 
            WM_PSD_ENVSTAMPRECT = (WM_USER + 5), 
            WM_PSD_FULLPAGERECT = (WM_USER + 1), 
            WM_PSD_GREEKTEXTRECT = (WM_USER + 4), 
            WM_PSD_MARGINRECT = (WM_USER + 3), 
            WM_PSD_MINMARGINRECT = (WM_USER + 2), 
            WM_PSD_PAGESETUPDLG = (WM_USER), 
            WM_PSD_YAFULLPAGERECT = (WM_USER + 6), 
            WM_QUERYDRAGICON = 0x37, 
            WM_QUERYENDSESSION = 0x11, 
            WM_QUERYNEWPALETTE = 0x30F, 
            WM_QUERYOPEN = 0x13, 
            WM_QUERYUISTATE = 0x129, 
            WM_QUEUESYNC = 0x23, 
            WM_QUIT = 0x12, 
            WM_RASDIALEVENT = 0xCCCD, 
            WM_RBUTTONDBLCLK = 0x206, 
            WM_RBUTTONDOWN = 0x204, 
            WM_RBUTTONUP = 0x205, 
            WM_RENDERALLFORMATS = 0x306, 
            WM_RENDERFORMAT = 0x305, 
            WM_SETCURSOR = 0x20, 
            WM_SETFOCUS = 0x7, 
            WM_SETFONT = 0x30, 
            WM_SETHOTKEY = 0x32, 
            WM_SETICON = 0x80, 
            WM_SETREDRAW = 0xB, 
            WM_SETTEXT = 0xC, 
            WM_SETTINGCHANGE = WM_WININICHANGE, 
            WM_SHOWWINDOW = 0x18, 
            WM_SIZE = 0x5, 
            WM_SIZECLIPBOARD = 0x30B, 
            WM_SIZING = 0x214, 
            WM_SPOOLERSTATUS = 0x2A, 
            WM_STYLECHANGED = 0x7D, 
            WM_STYLECHANGING = 0x7C, 
            WM_SYNCPAINT = 0x88, 
            WM_SYSCHAR = 0x106, 
            WM_SYSCOLORCHANGE = 0x15, 
            WM_SYSCOMMAND = 0x112, 
            WM_SYSDEADCHAR = 0x107, 
            WM_SYSKEYDOWN = 0x104, 
            WM_SYSKEYUP = 0x105, 
            WM_TCARD = 0x52, 
            WM_TIMECHANGE = 0x1E, 
            WM_TIMER = 0x113, 
            WM_UNDO = 0x304, 
            WM_UNINITMENUPOPUP = 0x125, 
            WM_UPDATEUISTATE = 0x128, 
            WM_USERCHANGED = 0x54, 
            WM_VKEYTOITEM = 0x2E, 
            WM_VSCROLL = 0x115, 
            WM_VSCROLLCLIPBOARD = 0x30A, 
            WM_WINDOWPOSCHANGED = 0x47, 
            WM_WINDOWPOSCHANGING = 0x46, 
            WM_WININICHANGE = 0x1A, 
            WM_WNT_CONVERTREQUESTEX = 0x109, 
            WM_XBUTTONDBLCLK = 0x20D, 
            WM_XBUTTONDOWN = 0x20B, 
            WM_XBUTTONUP = 0x20C 
        } 

        public static int WIN32_SendMessage( int handle, WM ww,int WParam, int LParam) 
        { 
            int wm = (int)ww; 
            int ret = SendMessage(handle, wm,WParam, LParam); 
            return ret; 
        } 
    } 
}

```