MCM_GETSELRANGE Windows メッセージを標準の MonthCalendar に送信しようとしています。ドキュメントに基づいて、次のことを試してみましたが、運が悪かったです(日付は何も返されません[ゼロ以外に設定されていないため]、成功したことを示すゼロ以外の戻り値が返されます?):
using System;
using System.Runtime.InteropServices;
namespace GetSelRange
{
class Program
{
static void Main(string[] args)
{
IntPtr targetWindowHandle = new IntPtr(68684130);
SYSTEMTIME[] dateRange = new SYSTEMTIME[2];
IntPtr success = SendMessage(targetWindowHandle, MCM_GETSELRANGE, IntPtr.Zero, dateRange);
}
#region Win32API
const uint MCM_FIRST = 0x1000;
const uint MCM_GETSELRANGE = MCM_FIRST + 5;
[StructLayout(LayoutKind.Sequential)]
private struct SYSTEMTIME
{
[MarshalAs(UnmanagedType.U2)]
public ushort Year;
[MarshalAs(UnmanagedType.U2)]
public ushort Month;
[MarshalAs(UnmanagedType.U2)]
public ushort DayOfWeek;
[MarshalAs(UnmanagedType.U2)]
public ushort Day;
[MarshalAs(UnmanagedType.U2)]
public ushort Hour;
[MarshalAs(UnmanagedType.U2)]
public ushort Minute;
[MarshalAs(UnmanagedType.U2)]
public ushort Second;
[MarshalAs(UnmanagedType.U2)]
public ushort Milliseconds;
}
[DllImport("user32.dll", CharSet = CharSet.Auto)]
static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, SYSTEMTIME[] lParam);
#endregion
}
}
pinvoke.net には、これをどのように呼び出すべきかについての提案はないようです。
ありがとうございました