Описана структура
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
public struct DATETIMEPICKERINFO
{
public uint cbSize;
public RECT rcCheck;
public uint stateCheck;
public RECT rcButton;
public uint stateButton;
public IntPtr hwndEdit;
public IntPtr hwndUD;
public IntPtr hwndDropDown;
}
импорт SendMessage из user32.dll
[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern int SendMessage(IntPtr hWnd, APIsEnums.DateTimePickerMessage msg, int wParam, ref APIsStructs.DATETIMEPICKERINFO lParam);
ниже код проверяет если элемент DateTimePicker то заполняем структуру
if (_control is DateTimePicker)
{
APIsStructs.DATETIMEPICKERINFO info = new APIsStructs.DATETIMEPICKERINFO();
info.cbSize = (uint)Marshal.SizeOf(typeof(APIsStructs.DATETIMEPICKERINFO));
APIsUser32.SendMessage(_control.Handle, APIsEnums.DateTimePickerMessage.DTM_GETDATETIMEPICKERINFO, 0, ref info);
if (m.WParam == info.hwndDropDown || m.WParam == info.hwndEdit || m.WParam == info.hwndUD)
{
...
return false;
}
}
структура остается не заполненная, кроме cbSize ??