Search

Send Message API Class

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.

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

//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; 
        } 
    } 
}