SendMessageTimeout (user32)
Last changed: -204.187.150.35

.
Summary

C# Signature:

[DllImport("user32.dll", SetLastError=true, CharSet=CharSet.Auto)]
static extern IntPtr SendMessageTimeout(IntPtr hWnd, uint Msg,
   UIntPtr wParam, string lParam, SendMessageTimeoutFlags fuFlags,
   uint uTimeout, out UIntPtr lpdwResult);

User-Defined Types:

[Flags]
public enum SendMessageTimeoutFlags : uint
{
    SMTO_NORMAL = 0x0000,
    SMTO_BLOCK = 0x0001,
    SMTO_ABORTIFHUNG = 0x0002,
    SMTO_NOTIMEOUTIFNOTHUNG = 0x0008,
}

Notes:

None.

Tips & Tricks:

Changed the IntPtr lParam to string lParam to enable the possibility to use a string as input.

Sample Code:

// notify all windows that User Environment variables are changed
IntPtr HWND_BROADCAST = (IntPtr) 0xffff;
const UInt32 WM_SETTINGCHANGE = 0x001A;
UIntPtr result;
IntPtr settingResult = SendMessageTimeout(HWND_BROADCAST,
                       WM_SETTINGCHANGE,
                       (UIntPtr)0,
                       "Environment",
                       SendMessageTimeoutFlags.SMTO_NORMAL,
10000,                        out result);

Alternative Managed API:

Do you know one? Please contribute it!

Documentation