C# 调用系统API.
从自己的软件,来操作别人写好的软件.
SendMessage
句柄 标识当前进程/控件的一个标识;
本课程所用到的常量信息:
private const uint LB_FINDSTRING = 0x18F;//查询项目在listbox中
private const uint LB_ADDSTRING = 0x180;//增加字符串在listbox中
private const uint LB_SETCURSEL = 0x186; //用于多选ListBox
private const uint LB_SETTOPINDEX = 0x197;//改变序号在ListBox
private const uint CB_FINDSTRING = 0x014C;//搜索字符串在下拉菜单中
private const uint CB_SETCURSEL = 0x014E;//设置下拉菜单的选中项
private const uint CB_SHOWDROPDOWN = 0x014F;//展开下拉菜单
private const uint BM_CLICK = 0x00F5;//按钮点击
引用其他非托管语言编写的DLL时.必须要加上此标志
关键字 方法所在的DLL 方法名称
[DllImport("user32.dll", EntryPoint = "FindWindow")]
权限修饰符 静态标志 修饰符 返回值类型 方法名(与调用方法相同)
private static extern IntPtr FindWindow(string IpClassName, string IpWindowName);
如何编写一个win32api的程序.
一、获取句柄
a) 从窗体标题中获取句柄/从进程中(pid)获取句柄
b) IntPtr.Zero 判断句柄是否为0
二、找到实现函数
a) SendMessage
三、函数的原型(搜索引擎,MSDN,玄机宝盒)
a) 可以使用宝盒的api速查
四、如何调用
a) EasyWin32Apis
找出窗体上所需要操控控件句柄,在进行消息传递.
一些常用的API消息

WM_NULL 0x0000 WM_CREATE 0x0001 WM_DESTROY 0x0002 WM_MOVE 0x0003 WM_SIZEWAIT 0x0004 WM_SIZE 0x0005 WM_ACTIVATE 0x0006 WM_SETFOCUS 0x0007 WM_KILLFOCUS 0x0008 WM_SETVISIBLE 0x0009 WM_ENABLE 0x000A WM_SETREDRAW 0x000B WM_SETTEXT 0x000C WM_GETTEXT 0x000D WM_GETTEXTLENGTH 0x000E WM_PAINT 0x000F WM_CLOSE 0x0010 WM_QUERYENDSESSION 0x0011 WM_QUIT 0x0012 WM_QUERYOPEN 0x0013 WM_ERASEBKGND 0x0014 WM_SYSCOLORCHANGE 0x0015 WM_ENDSESSION 0x0016 WM_SYSTEMERROR 0x0017 WM_SHOWWINDOW 0x0018 WM_CTLCOLOR 0x0019 WM_WININICHANGE 0x001A WM_DEVMODECHANGE 0x001B WM_ACTIVATEAPP 0x001C WM_FONTCHANGE 0x001D WM_TIMECHANGE 0x001E WM_CANCELMODE 0x001F WM_SETCURSOR 0x0020 WM_MOUSEACTIVATE 0x0021 WM_CHILDACTIVATE 0x0022 WM_QUEUESYNC 0x0023 WM_GETMINMAXINFO 0x0024 empty 0x0025 WM_PAINTICON 0x0026 WM_ICONERASEBKGND 0x0027 WM_NEXTDLGCTL 0x0028 WM_ALTTABACTIVE 0x0029 WM_SPOOLERSTATUS 0x002A WM_DRAWITEM 0x002B WM_MEASUREITEM 0x002C WM_DELETEITEM 0x002D WM_VKEYTOITEM 0x002E WM_CHARTOITEM 0x002F WM_SETFONT 0x0030 WM_GETFONT 0x0031 WM_SETHOTKEY 0x0032 WM_GETHOTKEY 0x0033 WM_FILESYSCHANGE 0x0034 WM_ISACTIVEICON 0x0035 WM_QUERYPARKICON 0x0036 WM_QUERYDRAGICON 0x0037 WM_WINHELP 0x0038 WM_COMPAREITEM 0x0039 WM_FULLSCREEN 0x003A WM_CLIENTSHUTDOWN 0x003B WM_DDEMLEVENT 0x003C empty 0x003D empty 0x003E MM_CALCSCROLL 0x003F WM_TESTING 0x0040 WM_COMPACTING 0x0041 WM_OTHERWINDOWCREATED 0x0042 WM_OTHERWINDOWDESTROYED 0x0043 WM_COMMNOTIFY 0x0044 WM_MEDIASTATUSCHANGE 0x0045 WM_WINDOWPOSCHANGING 0x0046 WM_WINDOWPOSCHANGED 0x0047 WM_POWER 0x0048 WM_COPYGLOBALDATA 0x0049 WM_COPYDATA 0x004A WM_CANCELJOURNAL 0x004B WM_LOGONNOTIFY 0x004C WM_KEYF1 0x004D WM_NOTIFY 0x004E WM_ACCESS_WINDOW 0x004f WM_INPUTLANGCHANGEREQUEST 0x0050 WM_INPUTLANGCHANGE 0x0051 WM_TCARD 0x0052 WM_HELP 0x0053 WINHELP4 WM_USERCHANGED 0x0054 WM_NOTIFYFORMAT 0x0055 0x0059-0x005F 0x0060-0x0067 0x0068-0x006F WM_FINALDESTROY 0x0070 WM_TASKACTIVATED 0x0072 WM_TASKDEACTIVATED 0x0073 WM_TASKCREATED 0x0074 WM_TASKDESTROYED 0x0075 WM_TASKUICHANGED 0x0076 WM_TASKVISIBLE 0x0077 WM_TASKNOTVISIBLE 0x0078 WM_SETCURSORINFO 0x0079 0x007A WM_CONTEXTMENU 0x007B WM_STYLECHANGING 0x007C WM_STYLECHANGED 0x007D 0x007E WM_GETICON 0x007f WM_SETICON 0x0080 WM_NCCREATE 0x0081 WM_NCDESTROY 0x0082 WM_NCCALCSIZE 0x0083 WM_NCHITTEST 0x0084 WM_NCPAINT 0x0085 WM_NCACTIVATE 0x0086 WM_GETDLGCODE 0x0087 WM_SYNCPAINT 0x0088 WM_SYNCTASK 0x0089 WM_KLUDGEMINRECT 0x008B WM_LPKDRAWSWITCHWND 0x008C 0x008D-0x008F 0x0090-0x0097 0x0098-0x009F WM_NCMOUSEMOVE 0x00A0 WM_NCLBUTTONDOWN 0x00A1 WM_NCLBUTTONUP 0x00A2 WM_NCLBUTTONDBLCLK 0x00A3 WM_NCRBUTTONDOWN 0x00A4 WM_NCRBUTTONUP 0x00A5 WM_NCRBUTTONDBLCLK 0x00A6 WM_NCMBUTTONDOWN 0x00A7 WM_NCMBUTTONUP 0x00A8 WM_NCMBUTTONDBLCLK 0x00A9 0x00AA-0x00AF EM_GETSEL 0x00B0 EM_SETSEL 0x00B1 EM_GETRECT 0x00B2 EM_SETRECT 0x00B3 EM_SETRECTNP 0x00B4 EM_SCROLL 0x00B5 EM_LINESCROLL 0x00B6 empty 0x00B7 EM_GETMODIFY 0x00B8 EM_SETMODIFY 0x00B9 EM_GETLINECOUNT 0x00BA EM_LINEINDEX 0x00BB EM_SETHANDLE 0x00BC EM_GETHANDLE 0x00BD EM_GETTHUMB 0x00BE empty 0x00BF empty 0x00C0 EM_LINELENGTH 0x00C1 EM_REPLACESEL 0x00C2 EM_SETFONT 0x00C3 EM_GETLINE 0x00C4 EM_LIMITTEXT 0x00C5 EM_CANUNDO 0x00C6 EM_UNDO 0x00C7 EM_FMTLINES 0x00C8 EM_LINEFROMCHAR 0x00C9 EM_SETWORDBREAK 0x00CA EM_SETTABSTOPS 0x00CB EM_SETPASSWORDCHAR 0x00CC EM_EMPTYUNDOBUFFER 0x00CD EM_GETFIRSTVISIBLELINE 0x00CE EM_SETREADONLY 0x00CF EM_SETWORDBREAKPROC 0x00D0 EM_GETWORDBREAKPROC 0x00D1 EM_GETPASSWORDCHAR 0x00D2 EM_SETMARGINS 0x00D3 EM_GETMARGINS 0x00D4 EM_GETLIMITTEXT 0x00D5 EM_POSFROMCHAR 0x00D6 EM_CHARFROMPOS 0x00D7 EM_SETIMESTATUS 0x00D8 EM_GETIMESTATUS 0x00D9 EM_MSGMAX 0x00DA 0x00DB-0x00DF SBM_SETPOS 0x00E0 SBM_GETPOS 0x00E1 SBM_SETRANGE 0x00E2 // SBM_GETRANGE 0x00E3 SBM_ENABLE_ARROWS 0x00E4 SBM_SETRANGEREDRAW 0x00E6 SBM_SETSCROLLINFO 0x00E9 SBM_GETSCROLLINFO 0x00EA BM_GETCHECK 0x00F0 BM_SETCHECK 0x00F1 BM_GETSTATE 0x00F2 BM_SETSTATE 0x00F3 BM_SETSTYLE 0x00F4 BM_CLICK 0x00F5 BM_GETIMAGE 0x00F6 BM_SETIMAGE 0x00F7 WM_KEYDOWN 0x0100 WM_KEYUP 0x0101 WM_CHAR 0x0102 WM_DEADCHAR 0x0103 WM_SYSKEYDOWN 0x0104 WM_SYSKEYUP 0x0105 WM_SYSCHAR 0x0106 WM_SYSDEADCHAR 0x0107 WM_YOMICHAR 0x0108 empty 0x0109 WM_CONVERTREQUEST 0x010A WM_CONVERTRESULT 0x010B empty 0x010C empty 0x010D empty 0x010E WM_IME_COMPOSITION 0x010F WM_INITDIALOG 0x0110 WM_COMMAND 0x0111 WM_SYSCOMMAND 0x0112 WM_TIMER 0x0113 WM_HSCROLL 0x0114 WM_VSCROLL 0x0115 WM_INITMENU 0x0116 WM_INITMENUPOPUP 0x0117 WM_SYSTIMER 0x0118 empty 0x0119 empty 0x011A empty 0x011B empty 0x011C empty 0x011D empty 0x011E WM_MENUSELECT 0x011F WM_MENUCHAR 0x0120 WM_ENTERIDLE 0x0121 WM_MENURBUTTONUP 0x0122 WM_MENUDRAG 0x0123 WM_MENUGETOBJECT 0x0124 WM_UNINITMENUPOPUP 0x0125 WM_MENUCOMMAND 0x0126 WM_CHANGEUISTATE 0x0127 WM_UPDATEUISTATE 0x0128 WM_QUERYUISTATE 0x0129 0x012A-0x012F empty 0x0130 WM_LBTRACKPOINT 0x0131 WM_CTLCOLORMSGBOX 0x0132 WM_CTLCOLOREDIT 0x0133 WM_CTLCOLORLISTBOX 0x0134 WM_CTLCOLORBTN 0x0135 WM_CTLCOLORDLG 0x0136 WM_CTLCOLORSCROLLBAR 0x0137 WM_CTLCOLORSTATIC 0x0138 0x0139 0x013A-0x013F CB_GETEDITSEL 0x0140 CB_LIMITTEXT 0x0141 CB_SETEDITSEL 0x0142 CB_ADDSTRING 0x0143 CB_DELETESTRING 0x0144 CB_DIR 0x0145 CB_GETCOUNT 0x0146 CB_GETCURSEL 0x0147 CB_GETLBTEXT 0x0148 CB_GETLBTEXTLEN 0x0149 CB_INSERTSTRING 0x014A CB_RESETCONTENT 0x014B CB_FINDSTRING 0x014C CB_SELECTSTRING 0x014D CB_SETCURSEL 0x014E CB_SHOWDROPDOWN 0x014F CB_GETITEMDATA 0x0150 CB_SETITEMDATA 0x0151 CB_GETDROPPEDCONTROLRECT 0x0152 CB_SETITEMHEIGHT 0x0153 CB_GETITEMHEIGHT 0x0154 CB_SETEXTENDEDUI 0x0155 CB_GETEXTENDEDUI 0x0156 CB_GETDROPPEDSTATE 0x0157 CB_FINDSTRINGEXACT 0x0158 CB_SETLOCALE 0x0159 CB_GETLOCALE 0x015A CB_GETTOPINDEX 0x015b CB_SETTOPINDEX 0x015c CB_GETHORIZONTALEXTENT 0x015d CB_SETHORIZONTALEXTENT 0x015e CB_GETDROPPEDWIDTH 0x015F CB_SETDROPPEDWIDTH 0x0160 CB_INITSTORAGE 0x0161 CB_MSGMAX 0x0162 0x0163-0x0167 0x0168-0x016F STM_SETICON 0x0170 STM_GETICON 0x0171 STM_SETIMAGE 0x0172 STM_GETIMAGE 0x0173 STM_MSGMAX 0x0174 0x0175-0x0177 0x0178-0x017F LB_ADDSTRING 0x0180 LB_INSERTSTRING 0x0181 LB_DELETESTRING 0x0182 empty 0x0183 LB_RESETCONTENT 0x0184 LB_SETSEL 0x0185 LB_SETCURSEL 0x0186 LB_GETSEL 0x0187 LB_GETCURSEL 0x0188 LB_GETTEXT 0x0189 LB_GETTEXTLEN 0x018A LB_GETCOUNT 0x018B LB_SELECTSTRING 0x018C LB_DIR 0x018D LB_GETTOPINDEX 0x018E LB_FINDSTRING 0x018F LB_GETSELCOUNT 0x0190 LB_GETSELITEMS 0x0191 LB_SETTABSTOPS 0x0192 LB_GETHORIZONTALEXTENT 0x0193 LB_SETHORIZONTALEXTENT 0x0194 LB_SETCOLUMNWIDTH 0x0195 LB_ADDFILE 0x0196 LB_SETTOPINDEX 0x0197 LB_GETITEMRECT 0x0198 LB_GETITEMDATA 0x0199 LB_SETITEMDATA 0x019A LB_SELITEMRANGE 0x019B LB_SETANCHORINDEX 0x019C LB_GETANCHORINDEX 0x019D LB_SETCARETINDEX 0x019E LB_GETCARETINDEX 0x019F LB_SETITEMHEIGHT 0x01A0 LB_GETITEMHEIGHT 0x01A1 LB_FINDSTRINGEXACT 0x01A2 LBCB_CARETON 0x01A3 LBCB_CARETOFF 0x01A4 LB_SETLOCALE 0x01A5 LB_GETLOCALE 0x01A6 LB_SETCOUNT 0x01A7 LB_INITSTORAGE 0x01A8 LB_ITEMFROMPOINT 0x01A9 LB_INSERTSTRINGUPPER 0x01AA LB_INSERTSTRINGLOWER 0x01AB LB_ADDSTRINGUPPER 0x01AC LB_ADDSTRINGLOWER 0x01AD LBCB_STARTTRACK 0x01AE LBCB_ENDTRACK 0x01AF LB_MSGMAX 0x01B0 0x01B1-0x01B7 0x01B8-0x01BF 0x01C0-0x01C7 0x01C8-0x01CF 0x01D0-0x01D7 0x01D8-0x01DF MN_SETHMENU 0x01E0 MN_GETHMENU 0x01E1 MN_SIZEWINDOW 0x01E2 MN_OPENHIERARCHY 0x01E3 MN_CLOSEHIERARCHY 0x01E4 MN_SELECTITEM 0x01E5 MN_CANCELMENUS 0x01E6 MN_SELECTFIRSTVALIDITEM 0x01E7 0x1E8 - 0x1E9 MN_GETPPOPUPMENU(obsolete) 0x01EA MN_FINDMENUWINDOWFROMPOINT 0x01EB MN_SHOWPOPUPWINDOW 0x01EC MN_BUTTONDOWN 0x01ED MN_MOUSEMOVE 0x01EE MN_BUTTONUP 0x01EF MN_SETTIMERTOOPENHIERARCHY 0x01F0 MN_DBLCLK 0x01F1 MN_ENDMENU 0x01F2 MN_DODRAGDROP 0x01F3 MN_ENDMENU 0x01F4 WM_MOUSEMOVE 0x0200 WM_LBUTTONDOWN 0x0201 WM_LBUTTONUP 0x0202 WM_LBUTTONDBLCLK 0x0203 WM_RBUTTONDOWN 0x0204 WM_RBUTTONUP 0x0205 WM_RBUTTONDBLCLK 0x0206 WM_MBUTTONDOWN 0x0207 WM_MBUTTONUP 0x0208 WM_MBUTTONDBLCLK 0x0209 WM_MOUSEWHEEL 0x020A WM_XBUTTONDOWN 0x020B WM_XBUTTONUP 0x020C WM_XBUTTONDBLCLK 0x020D empty 0x020E empty 0x020F WM_PARENTNOTIFY 0x0210 WM_ENTERMENULOOP 0x0211 WM_EXITMENULOOP 0x0212 WM_NEXTMENU 0x0213 WM_SIZING 0x0214 WM_CAPTURECHANGED 0x0215 WM_MOVING 0x0216 WM_POWERBROADCAST 0x0218 WM_DEVICECHANGE 0x0219 0x021A-0x021F WM_MDICREATE 0x0220 WM_MDIDESTROY 0x0221 WM_MDIACTIVATE 0x0222 WM_MDIRESTORE 0x0223 WM_MDINEXT 0x0224 WM_MDIMAXIMIZE 0x0225 WM_MDITILE 0x0226 WM_MDICASCADE 0x0227 WM_MDIICONARRANGE 0x0228 // WM_MDIGETACTIVE 0x0229 WM_DROPOBJECT 0x022A WM_QUERYDROPOBJECT 0x022B WM_BEGINDRAG 0x022C WM_DRAGLOOP 0x022D WM_DRAGSELECT 0x022E WM_DRAGMOVE 0x022F WM_MDISETMENU 0x0230 WM_ENTERSIZEMOVE 0x0231 WM_EXITSIZEMOVE 0x0232 WM_DROPFILES 0x0233 WM_MDIREFRESHMENU 0x0234 0x0235-0x0237 0x0238-0x023F 0x0240-0x0247 0x0248-0x024F 0x0250-0x0257 0x0258-0x025F 0x0260-0x0267 0x0268-0x026F 0x0270-0x0277 0x0278-0x027F WM_IME_REPORT 0x0280 WM_IME_SETCONTEXT 0x0281 WM_IME_NOTIFY 0x0282 WM_IME_CONTROL 0x0283 WM_IME_COMPOSITIONFULL 0x0284 WM_IME_SELECT 0x0285 WM_IME_CHAR 0x0286 0x0288 0x0290 0x0298 WM_KANJILAST 0x029F WM_NCMOUSEHOVER 0x02Ao WM_MOUSEHOVER 0x02A1 WM_NCMOUSELEAVE 0x02A2 WM_MOUSELEAVE 0x02A3 0x02A4-0x02A7 0x02A8-0x02AF 0x02B0-0x02B7 0x02B8-0x02BF 0x02C0-0x02C7 0x02C8-0x02CF 0x02D0-0x02D7 0x02D8-0x02DF 0x02E0-0x02E7 0x02E8-0x02EF 0x02F0-0x02F7 0x02F8-0x02FF WM_CUT 0x0300 WM_COPY 0x0301 WM_PASTE 0x0302 WM_CLEAR 0x0303 WM_UNDO 0x0304 WM_RENDERFORMAT 0x0305 WM_RENDERALLFORMATS 0x0306 WM_DESTROYCLIPBOARD 0x0307 WM_DRAWCLIPBOARD 0x0308 WM_PAINTCLIPBOARD 0x0309 WM_VSCROLLCLIPBOARD 0x030A WM_SIZECLIPBOARD 0x030B WM_ASKCBFORMATNAME 0x030C WM_CHANGECBCHAIN 0x030D WM_HSCROLLCLIPBOARD 0x030E WM_QUERYNEWPALETTE 0x030F WM_PALETTEISCHANGING 0x0310 WM_PALETTECHANGED 0x0311 WM_HOTKEY 0x0312 0x0313-0x0316 WM_HOOKMSG 0x0314 WM_EXITPROCESS 0x0315 WM_WAKETHREAD 0x0316 WM_PRINT 0x0317 WM_PRINTCLIENT 0x0318 WM_APPCOMMAND 0x0319 0x0320-0x0327 0x0328-0x032F 0x0330-0x0337 0x0338-0x033F 0x0340-0x0347 0x0348-0x034F 0x0350-0x0357 reserved pen windows 0x0358-0x035F 0x0360-0x0367 0x0368-0x036F 0x0370-0x0377 0x0378-0x037F 0x0380-0x0387 0x0388-0x038F 0x0390-0x0397 0x0398-0x039F WM_MM_RESERVED_FIRST 0x03A0 0x03A8 0x03B0 0x03B7 0x03C0 0x03C7 0x03D0 0x03D7 WM_MM_RESERVED_LAST 0x03DF WM_DDE_INITIATE 0x03E0 WM_DDE_TERMINATE 0x03E1 WM_DDE_ADVISE 0x03E2 WM_DDE_UNADVISE 0x03E3 WM_DDE_ACK 0x03E4 WM_DDE_DATA 0x03E5 WM_DDE_REQUEST 0x03E6 WM_DDE_POKE 0x03E7 WM_DDE_EXECUTE 0x03E8 0x03E9-0x03EF WM_CBT_RESERVED_FIRST 0x03F0 0x03F8 WM_CBT_RESERVED_LAST 0x03FF
视频教程出自:http://www.xuanjics.com/thread-106-1-1.html
玄机论坛的地址:www.xuanjics.com 原创作者:君临