Win32API周りの実装を、ひとまとめにしたクラス。ちょくちょく追加・修正する予定です。

using System;
using System.Runtime.InteropServices;

namespace Net.Kyoh.Windows
{
public struct CopyData
{
public IntPtr dwData;
public UInt32 cbData;
public IntPtr lpData;
}

public static class Win32API
{
#region コントロールメッセージ群

public const int BM_SETSTYLE = 0x00F4;
public const int BM_SETSTATE = 0x00F3;
public const int BM_SETIMAGE = 0x00F7;
public const int BM_SETCHECK = 0x00F1;
public const int BM_GETSTATE = 0x00F2;
public const int BM_GETIMAGE = 0x00F6;
public const int BM_GETCHECK = 0x00F0;
public const int BM_CLICK = 0x00F5;
public const int CB_GETDROPPEDCONTROLRECT = 0×0152;
public const int CB_SETHORIZONTALEXTENT = 0x015E;
public const int CB_GETHORIZONTALEXTENT = 0x015D;
public const int CB_SETDROPPEDWIDTH = 0×0160;
public const int CB_GETDROPPEDWIDTH = 0x015F;
public const int CB_GETDROPPEDSTATE = 0×0157;
public const int CB_GETCOMBOBOXINFO = 0×0164;
public const int CB_FINDSTRINGEXACT = 0×0158;
public const int CB_SETITEMHEIGHT = 0×0153;
public const int CB_SETEXTENDEDUI = 0×0155;
public const int CB_GETITEMHEIGHT = 0×0154;
public const int CB_GETEXTENDEDUI = 0×0156;
public const int CB_SHOWDROPDOWN = 0x014F;
public const int CB_SELECTSTRING = 0x014D;
public const int CB_RESETCONTENT = 0x014B;
public const int CB_INSERTSTRING = 0x014A;
public const int CB_GETLBTEXTLEN = 0×0149;
public const int CB_DELETESTRING = 0×0144;
public const int CB_SETTOPINDEX = 0x015C;
public const int CB_SETITEMDATA = 0×0151;
public const int CB_INITSTORAGE = 0×0161;
public const int CB_GETTOPINDEX = 0x015B;
public const int CB_GETITEMDATA = 0×0150;
public const int CB_SETEDITSEL = 0×0142;
public const int CB_GETEDITSEL = 0×0140;
public const int CB_FINDSTRING = 0x014C;
public const int CB_SETLOCALE = 0×0159;
public const int CB_SETCURSEL = 0x014E;
public const int CB_LIMITTEXT = 0×0141;
public const int CB_GETLOCALE = 0x015A;
public const int CB_GETLBTEXT = 0×0148;
public const int CB_GETCURSEL = 0×0147;
public const int CB_ADDSTRING = 0×0143;
public const int CB_GETCOUNT = 0×0146;
public const int CB_ERRSPACE = -2;
public const int CB_MSGMAX = 0×0165;
public const int CB_OKAY = 0;
public const int CB_ERR = -1;
public const int CB_DIR = 0×0145;
public const int EM_GETFIRSTVISIBLELINE = 0x00CE;
public const int EM_SETWORDBREAKPROC = 0x00D0;
public const int EM_GETWORDBREAKPROC = 0x00D1;
public const int EM_SETPASSWORDCHAR = 0x00CC;
public const int EM_GETPASSWORDCHAR = 0x00D2;
public const int EM_EMPTYUNDOBUFFER = 0x00CD;
public const int EM_SETLIMITTEXT = 0x00C5;
public const int EM_SETIMESTATUS = 0x00D8;
public const int EM_LINEFROMCHAR = 0x00C9;
public const int EM_GETLINECOUNT = 0x00BA;
public const int EM_GETLIMITTEXT = 0x00D5;
public const int EM_GETIMESTATUS = 0x00D9;
public const int EM_SETTABSTOPS = 0x00CB;
public const int EM_SETREADONLY = 0x00CF;
public const int EM_SCROLLCARET = 0x00B7;
public const int EM_POSFROMCHAR = 0x00D6;
public const int EM_CHARFROMPOS = 0x00D7;
public const int EM_SETMARGINS = 0x00D3;
public const int EM_REPLACESEL = 0x00C2;
public const int EM_LINESCROLL = 0x00B6;
public const int EM_LINELENGTH = 0x00C1;
public const int EM_GETMARGINS = 0x00D4;
public const int EM_SETRECTNP = 0x00B4;
public const int EM_SETMODIFY = 0x00B9;
public const int EM_SETHANDLE = 0x00BC;
public const int EM_LINEINDEX = 0x00BB;
public const int EM_LIMITTEXT = 0x00C5;
public const int EM_GETMODIFY = 0x00B8;
public const int EM_GETHANDLE = 0x00BD;
public const int EM_GETTHUMB = 0x00BE;
public const int EM_FMTLINES = 0x00C8;
public const int EM_SETRECT = 0x00B3;
public const int EM_GETRECT = 0x00B2;
public const int EM_GETLINE = 0x00C4;
public const int EM_CANUNDO = 0x00C6;
public const int EM_SETSEL = 0x00B1;
public const int EM_SCROLL = 0x00B5;
public const int EM_GETSEL = 0x00B0;
public const int EM_UNDO = 0x00C7;
public const int LB_SETHORIZONTALEXTENT = 0×0194;
public const int LB_GETHORIZONTALEXTENT = 0×0193;
public const int LB_FINDSTRINGEXACT = 0x01A2;
public const int LB_SETCOLUMNWIDTH = 0×0195;
public const int LB_SETANCHORINDEX = 0x019C;
public const int LB_SELITEMRANGEEX = 0×0183;
public const int LB_GETLISTBOXINFO = 0x01B2;
public const int LB_GETANCHORINDEX = 0x019D;
public const int LB_SETITEMHEIGHT = 0x01A0;
public const int LB_SETCARETINDEX = 0x019E;
public const int LB_ITEMFROMPOINT = 0x01A9;
public const int LB_GETITEMHEIGHT = 0x01A1;
public const int LB_GETCARETINDEX = 0x019F;
public const int LB_SELITEMRANGE = 0x019B;
public const int LB_SELECTSTRING = 0x018C;
public const int LB_RESETCONTENT = 0×0184;
public const int LB_INSERTSTRING = 0×0181;
public const int LB_DELETESTRING = 0×0182;
public const int LB_SETTOPINDEX = 0×0197;
public const int LB_SETTABSTOPS = 0×0192;
public const int LB_SETITEMDATA = 0x019A;
public const int LB_INITSTORAGE = 0x01A8;
public const int LB_GETTOPINDEX = 0x018E;
public const int LB_GETSELITEMS = 0×0191;
public const int LB_GETSELCOUNT = 0×0190;
public const int LB_GETITEMRECT = 0×0198;
public const int LB_GETITEMDATA = 0×0199;
public const int LB_GETTEXTLEN = 0x018A;
public const int LB_FINDSTRING = 0x018F;
public const int LB_SETLOCALE = 0x01A5;
public const int LB_SETCURSEL = 0×0186;
public const int LB_GETLOCALE = 0x01A6;
public const int LB_GETCURSEL = 0×0188;
public const int LB_ADDSTRING = 0×0180;
public const int LB_SETCOUNT = 0x01A7;
public const int LB_GETCOUNT = 0x018B;
public const int LB_ERRSPACE = -2;
public const int LB_GETTEXT = 0×0189;
public const int LB_CTLCODE = 0×0000;
public const int LB_ADDFILE = 0×0196;
public const int LB_SETSEL = 0×0185;
public const int LB_MSGMAX = 0x01B3;
public const int LB_GETSEL = 0×0187;
public const int LB_OKAY = 0×0000;
public const int LB_ERR = -1;
public const int LB_DIR = 0x018D;
public const int SBM_GETSCROLLBARINFO = 0x00EB;
public const int SBM_SETRANGEREDRAW = 0x00E6;
public const int SBM_SETSCROLLINFO = 0x00E9;
public const int SBM_GETSCROLLINFO = 0x00EA;
public const int SBM_ENABLE_ARROWS = 0x00E4;
public const int SBM_SETRANGE = 0x00E2;
public const int SBM_GETRANGE = 0x00E3;
public const int SBM_SETPOS = 0x00E0;
public const int SBM_GETPOS = 0x00E1;
public const int STM_SETIMAGE = 0×0172;
public const int STM_GETIMAGE = 0×0173;
public const int STM_SETICON = 0×0170;
public const int STM_GETICON = 0×0171;
public const int STM_MSGMAX = 0×0174;
public const int WM_INPUTLANGCHANGEREQUEST = 0×0050;
public const int WM_CHOOSEFONT_SETLOGFONT = 0×0465;
public const int WM_CHOOSEFONT_GETLOGFONT = 0×0401;
public const int WM_IME_STARTCOMPOSITION = 0x010D;
public const int WM_IME_COMPOSITIONFULL = 0×0284;
public const int WM_CHOOSEFONT_SETFLAGS = 0×0465;
public const int WM_PSD_YAFULLPAGERECT = 0×0406;
public const int WM_IME_ENDCOMPOSITION = 0x010E;
public const int WM_WTSSESSION_CHANGE = 0x02B1;
public const int WM_WINDOWPOSCHANGING = 0×0046;
public const int WM_PSD_MINMARGINRECT = 0×0402;
public const int WM_PSD_GREEKTEXTRECT = 0×0404;
public const int WM_PALETTEISCHANGING = 0×0310;
public const int WM_CTLCOLORSCROLLBAR = 0×0137;
public const int WM_WINDOWPOSCHANGED = 0×0047;
public const int WM_VSCROLLCLIPBOARD = 0x030A;
public const int WM_RENDERALLFORMATS = 0×0306;
public const int WM_PSD_PAGESETUPDLG = 0×0400;
public const int WM_PSD_FULLPAGERECT = 0×0401;
public const int WM_PSD_ENVSTAMPRECT = 0×0405;
public const int WM_HSCROLLCLIPBOARD = 0x030E;
public const int WM_DESTROYCLIPBOARD = 0×0307;
public const int WM_UNINITMENUPOPUP = 0×0125;
public const int WM_QUERYNEWPALETTE = 0x030F;
public const int WM_QUERYENDSESSION = 0×0011;
public const int WM_NCXBUTTONDBLCLK = 0x00AD;
public const int WM_NCRBUTTONDBLCLK = 0x00A6;
public const int WM_NCMBUTTONDBLCLK = 0x00A9;
public const int WM_NCLBUTTONDBLCLK = 0x00A3;
public const int WM_INPUTLANGCHANGE = 0×0051;
public const int WM_IME_COMPOSITION = 0x010F;
public const int WM_CTLCOLORLISTBOX = 0×0134;
public const int WM_ASKCBFORMATNAME = 0x030C;
public const int WM_SYSCOLORCHANGE = 0×0015;
public const int WM_PSD_MARGINRECT = 0×0403;
public const int WM_POWERBROADCAST = 0×0218;
public const int WM_PALETTECHANGED = 0×0311;
public const int WM_PAINTCLIPBOARD = 0×0309;
public const int WM_MDIREFRESHMENU = 0×0234;
public const int WM_MDIICONARRANGE = 0×0228;
public const int WM_IME_SETCONTEXT = 0×0281;
public const int WM_ICONERASEBKGND = 0×0027;
public const int WM_CTLCOLORSTATIC = 0×0138;
public const int WM_CTLCOLORMSGBOX = 0×0132;
public const int WM_CAPTURECHANGED = 0×0215;
public const int WM_XBUTTONDBLCLK = 0x020D;
public const int WM_UPDATEUISTATE = 0×0128;
public const int WM_STYLECHANGING = 0x007C;
public const int WM_SPOOLERSTATUS = 0x002A;
public const int WM_SIZECLIPBOARD = 0x030B;
public const int WM_SETTINGCHANGE = 0x001A;
public const int WM_RBUTTONDBLCLK = 0×0206;
public const int WM_QUERYDRAGICON = 0×0037;
public const int WM_NCXBUTTONDOWN = 0x00AB;
public const int WM_NCRBUTTONDOWN = 0x00A4;
public const int WM_NCMBUTTONDOWN = 0x00A7;
public const int WM_NCLBUTTONDOWN = 0x00A1;
public const int WM_MOUSEACTIVATE = 0×0021;
public const int WM_MENURBUTTONUP = 0×0122;
public const int WM_MENUGETOBJECT = 0×0124;
public const int WM_MBUTTONDBLCLK = 0×0209;
public const int WM_LBUTTONDBLCLK = 0×0203;
public const int WM_INITMENUPOPUP = 0×0117;
public const int WM_HANDHELDFIRST = 0×0358;
public const int WM_GETTEXTLENGTH = 0x000E;
public const int WM_GETMINMAXINFO = 0×0024;
public const int WM_ENTERSIZEMOVE = 0×0231;
public const int WM_ENTERMENULOOP = 0×0211;
public const int WM_DRAWCLIPBOARD = 0×0308;
public const int WM_DISPLAYCHANGE = 0x007E;
public const int WM_DEVMODECHANGE = 0x001B;
public const int WM_DDE_TERMINATE = 0x03E1;
public const int WM_CHILDACTIVATE = 0×0022;
public const int WM_CHANGEUISTATE = 0×0127;
public const int WM_CHANGECBCHAIN = 0x030D;
public const int WM_CANCELJOURNAL = 0x004B;
public const int WM_WININICHANGE = 0x001A;
public const int WM_THEMECHANGED = 0x031A;
public const int WM_TABLET_FIRST = 0x02C0;
public const int WM_STYLECHANGED = 0x007D;
public const int WM_RENDERFORMAT = 0×0305;
public const int WM_QUERYUISTATE = 0×0129;
public const int WM_PARENTNOTIFY = 0×0210;
public const int WM_NOTIFYFORMAT = 0×0055;
public const int WM_NCMOUSELEAVE = 0x02A2;
public const int WM_NCMOUSEHOVER = 0x02A0;
public const int WM_MDIGETACTIVE = 0×0229;
public const int WM_HANDHELDLAST = 0x035F;
public const int WM_EXITSIZEMOVE = 0×0232;
public const int WM_EXITMENULOOP = 0×0212;
public const int WM_DEVICECHANGE = 0×0219;
public const int WM_DDE_UNADVISE = 0x03E3;
public const int WM_DDE_INITIATE = 0x03E0;
public const int WM_CTLCOLOREDIT = 0×0133;
public const int WM_XBUTTONDOWN = 0x020B;
public const int WM_USERCHANGED = 0×0054;
public const int WM_TABLET_LAST = 0x02DF;
public const int WM_SYSDEADCHAR = 0×0107;
public const int WM_RBUTTONDOWN = 0×0204;
public const int WM_PRINTCLIENT = 0×0318;
public const int WM_PENWINFIRST = 0×0380;
public const int WM_NCXBUTTONUP = 0x00AC;
public const int WM_NCRBUTTONUP = 0x00A5;
public const int WM_NCMOUSEMOVE = 0x00A0;
public const int WM_NCMBUTTONUP = 0x00A8;
public const int WM_NCLBUTTONUP = 0x00A2;
public const int WM_MENUCOMMAND = 0×0126;
public const int WM_MEASUREITEM = 0x002C;
public const int WM_MDIMAXIMIZE = 0×0225;
public const int WM_MDIACTIVATE = 0×0222;
public const int WM_MBUTTONDOWN = 0×0207;
public const int WM_LBUTTONDOWN = 0×0201;
public const int WM_IME_REQUEST = 0×0288;
public const int WM_IME_KEYLAST = 0x010F;
public const int WM_IME_KEYDOWN = 0×0290;
public const int WM_IME_CONTROL = 0×0283;
public const int WM_DDE_REQUEST = 0x03E6;
public const int WM_DDE_EXECUTE = 0x03E8;
public const int WM_CTLCOLORDLG = 0×0136;
public const int WM_CTLCOLORBTN = 0×0135;
public const int WM_CONTEXTMENU = 0x007B;
public const int WM_COMPAREITEM = 0×0039;
public const int WM_ACTIVATEAPP = 0x001C;
public const int WM_VKEYTOITEM = 0x002E;
public const int WM_TIMECHANGE = 0x001E;
public const int WM_SYSKEYDOWN = 0×0104;
public const int WM_SYSCOMMAND = 0×0112;
public const int WM_SHOWWINDOW = 0×0018;
public const int WM_PENWINLAST = 0x038F;
public const int WM_NEXTDLGCTL = 0×0028;
public const int WM_NCCALCSIZE = 0×0083;
public const int WM_NCACTIVATE = 0×0086;
public const int WM_MOUSEWHEEL = 0x020A;
public const int WM_MOUSELEAVE = 0x02A3;
public const int WM_MOUSEHOVER = 0x02A1;
public const int WM_MOUSEFIRST = 0×0200;
public const int WM_MENUSELECT = 0x011F;
public const int WM_MDISETMENU = 0×0230;
public const int WM_MDIRESTORE = 0×0223;
public const int WM_MDIDESTROY = 0×0221;
public const int WM_MDICASCADE = 0×0227;
public const int WM_INITDIALOG = 0×0110;
public const int WM_IME_SELECT = 0×0285;
public const int WM_IME_NOTIFY = 0×0282;
public const int WM_GETDLGCODE = 0×0087;
public const int WM_FONTCHANGE = 0x001D;
public const int WM_ERASEBKGND = 0×0014;
public const int WM_ENDSESSION = 0×0016;
public const int WM_DELETEITEM = 0x002D;
public const int WM_DDE_ADVISE = 0x03E2;
public const int WM_COMPACTING = 0×0041;
public const int WM_COMMNOTIFY = 0×0044;
public const int WM_CHARTOITEM = 0x002F;
public const int WM_CANCELMODE = 0x001F;
public const int WM_APPCOMMAND = 0×0319;
public const int WM_XBUTTONUP = 0x020C;
public const int WM_SYNCPAINT = 0×0088;
public const int WM_SETREDRAW = 0x000B;
public const int WM_SETHOTKEY = 0×0032;
public const int WM_SETCURSOR = 0×0020;
public const int WM_RBUTTONUP = 0×0205;
public const int WM_QUEUESYNC = 0×0023;
public const int WM_QUERYOPEN = 0×0013;
public const int WM_PAINTICON = 0×0026;
public const int WM_NCHITTEST = 0×0084;
public const int WM_NCDESTROY = 0×0082;
public const int WM_MOUSEMOVE = 0×0200;
public const int WM_MOUSELAST = 0x020D;
public const int WM_MDICREATE = 0×0220;
public const int WM_MBUTTONUP = 0×0208;
public const int WM_LBUTTONUP = 0×0202;
public const int WM_KILLFOCUS = 0×0008;
public const int WM_IME_KEYUP = 0×0291;
public const int WM_GETOBJECT = 0x003D;
public const int WM_GETHOTKEY = 0×0033;
public const int WM_ENTERIDLE = 0×0121;
public const int WM_DROPFILES = 0×0233;
public const int WM_DDE_FIRST = 0x03E0;
public const int WM_SYSKEYUP = 0×0105;
public const int WM_SETFOCUS = 0×0007;
public const int WM_NEXTMENU = 0×0213;
public const int WM_NCCREATE = 0×0081;
public const int WM_MENUDRAG = 0×0123;
public const int WM_MENUCHAR = 0×0120;
public const int WM_KEYFIRST = 0×0100;
public const int WM_INITMENU = 0×0116;
public const int WM_IME_CHAR = 0×0286;
public const int WM_DRAWITEM = 0x002B;
public const int WM_DEADCHAR = 0×0103;
public const int WM_DDE_POKE = 0x03E7;
public const int WM_DDE_LAST = 0x03E7;
public const int WM_DDE_DATA = 0x03E5;
public const int WM_COPYDATA = 0x004A;
public const int WM_AFXFIRST = 0×0360;
public const int WM_ACTIVATE = 0×0006;
public const int WM_VSCROLL = 0×0115;
public const int WM_UNICHAR = 0×0109;
public const int WM_SYSCHAR = 0×0106;
public const int WM_SETTEXT = 0x000C;
public const int WM_SETICON = 0×0080;
public const int WM_SETFONT = 0×0030;
public const int WM_NCPAINT = 0×0085;
public const int WM_MDITILE = 0×0226;
public const int WM_MDINEXT = 0×0224;
public const int WM_KEYLAST = 0×0109;
public const int WM_KEYDOWN = 0×0100;
public const int WM_HSCROLL = 0×0114;
public const int WM_GETTEXT = 0x000D;
public const int WM_GETICON = 0x007F;
public const int WM_GETFONT = 0×0031;
public const int WM_DESTROY = 0×0002;
public const int WM_DDE_ACK = 0x03E4;
public const int WM_COMMAND = 0×0111;
public const int WM_AFXLAST = 0x037F;
public const int WM_SIZING = 0×0214;
public const int WM_NOTIFY = 0x004E;
public const int WM_MOVING = 0×0216;
public const int WM_HOTKEY = 0×0312;
public const int WM_ENABLE = 0x000A;
public const int WM_CREATE = 0×0001;
public const int WM_TIMER = 0×0113;
public const int WM_TCARD = 0×0052;
public const int WM_PRINT = 0×0317;
public const int WM_POWER = 0×0048;
public const int WM_PASTE = 0×0302;
public const int WM_PAINT = 0x000F;
public const int WM_KEYUP = 0×0101;
public const int WM_INPUT = 0x00FF;
public const int WM_CLOSE = 0×0010;
public const int WM_CLEAR = 0×0303;
public const int WM_USER = 0×0400;
public const int WM_UNDO = 0×0304;
public const int WM_SIZE = 0×0005;
public const int WM_QUIT = 0×0012;
public const int WM_NULL = 0×0000;
public const int WM_MOVE = 0×0003;
public const int WM_HELP = 0×0053;
public const int WM_COPY = 0×0301;
public const int WM_CHAR = 0×0102;
public const int WM_CUT = 0×0300;
public const int WM_APP = 0×8000;

#endregion

[DllImportAttribute("user32.dll", EntryPoint = "RegisterWindowMessage")]
public static extern uint RegisterWindowMessage(
[InAttribute()]
[MarshalAsAttribute(UnmanagedType.LPStr)]
string lpString);

[DllImportAttribute("user32.dll", EntryPoint = "SendMessageTimeout")]
public static extern IntPtr SendMessageTimeout([InAttribute()] IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam, SendMessageTimeoutFlags fuFlags, uint uTimeout, IntPtr lpdwResult);

public enum SendMessageTimeoutFlags : uint
{
///

/// 関数が制御を返すのを待機している間、呼び出しスレッドが他の要求に対する処理を行うことができるようにします。
///

Normal = 0×0000,
///

/// 関数が制御を返すのを待機している間、他の要求に対する処理が行われないようにします。
///

Block = 0×0001,
///

/// 受け取り側スレッドが応答しない状態である(ハングアップしている)と思われる場合には、タイムアウト時間が経過するのを待つことなく制御を返します。
///

AbortIfHung = 0×0002,
///

/// // Windows 2000/XP: 受け取り側スレッドが応答を中断した場合に、タイムアウト時間が経過しても制御を返しません。
///

NoTimeOutIfNotHung = 0×0008,
}

public static readonly IntPtr HWND_BROADCAST = new IntPtr(0xffff);
[DllImport("user32.dll", EntryPoint = "SendMessage")]
public static extern IntPtr SendMessage(IntPtr windowHandle, uint messageId, IntPtr wParam, IntPtr lParam);
[DllImport("user32.dll", EntryPoint = "SendMessage")]
public static extern IntPtr SendMessage(IntPtr windowHandle, uint messageId, IntPtr wParam, ref CopyData lParam);
[DllImport("user32.dll", EntryPoint = "PostMessage")]
public static extern IntPtr PostMessage(IntPtr windowHandle, uint messageId, IntPtr wParam, IntPtr lParam);
[DllImport("user32.dll", EntryPoint = "PostMessage")]
public static extern IntPtr PostMessage(IntPtr windowHandle, uint messageId, IntPtr wParam, ref CopyData lParam);
[DllImport("user32.dll")]
public static extern IntPtr ReplyMessage(IntPtr lResult);
}
}

1件のレスポンス “Net.Kyoh.Windows.Win32API”へ

  1. [...] ちなみに、このクラスを使用するためにはNet.Kyoh.Windows.Win32APIクラスが必要になります。 [...]

コメントをどうぞ