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  原创作者:君临

                    QQ交流群:16885911  

番外篇 之 Win32Api的更多相关文章

  1. 【番外篇】ASP.NET MVC快速入门之免费jQuery控件库(MVC5+EF6)

    目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...

  2. iOS冰与火之歌(番外篇) - 基于PEGASUS(Trident三叉戟)的OS X 10.11.6本地提权

    iOS冰与火之歌(番外篇) 基于PEGASUS(Trident三叉戟)的OS X 10.11.6本地提权 蒸米@阿里移动安全 0x00 序 这段时间最火的漏洞当属阿联酋的人权活动人士被apt攻击所使用 ...

  3. 给深度学习入门者的Python快速教程 - 番外篇之Python-OpenCV

    这次博客园的排版彻底残了..高清版请移步: https://zhuanlan.zhihu.com/p/24425116 本篇是前面两篇教程: 给深度学习入门者的Python快速教程 - 基础篇 给深度 ...

  4. 可视化(番外篇)——在Eclipse RCP中玩转OpenGL

    最近在看有关Eclipse RCP方面的东西,鉴于Gephi是使用opengl作为绘图引擎,所以,萌生了在Eclipse RCP下添加画布,使用opengl绘图的想法,网上有博文详细介绍这方面的内容, ...

  5. 可视化(番外篇)——SWT总结

    本篇主要介绍如何在SWT下构建一个应用,如何安装SWT Designer并破解已进行SWT的可视化编程,Display以及Shell为何物.有何用,SWT中的常用组件.面板容器以及事件模型等. 1.可 ...

  6. 【重走Android之路】【番外篇】关于==和equals

    [重走Android之路][番外篇]关于==和equals   在实际的编程当中,经常会使用==和equals来判断变量是否相同.但是这两种比较方式也常常让人搞得云里雾里摸不着头脑.下面是我个人做的总 ...

  7. 【重走Android之路】【番外篇】有关于null的一些知识点

    [重走Android之路][番外篇]有关于null的一些知识点   1.首先,到底什么是null? null是Java中的一个关键字,用于表示一个空对象引用,但其本身并不是任何类型也不是属于任何对象. ...

  8. 番外篇 之 C#委托

    对于上一节 番外篇之C#多线程的反思 反思一:   Thread th = new Thread(参数); ////参数的总结 ////首先,第一情况,对于 Thread th = new Threa ...

  9. [置顶] think in java interview番外篇-谈程序员如何修练英语

    一.程序员对英语能力的重视度和能力要求应该是在各行各业中排在比较靠前的 这样说吧,英语程度的好坏直接影响着一个程序员的编程.开发.创新能力. 道理很简单: 1. 计算机和软件是用英语创造出来的 2. ...

随机推荐

  1. Unity里vertexShader里压扁模型来实现比较low的阴影

    只有阴影pass,请自行合并,需要指定高度,忽略深度检测,需要控制好排序,或者去掉忽略,视情况而定,最后我觉得还是shadowmap好 Shader "Custom/MeshShadow&q ...

  2. Kotlin 基本语法

    常量 val a: Int = 5 变量 var a: Int = 5 Any:匹配任何类型 ?:nullable,比如 a?.toString,如果 a 为 null 不会出错. 函数基本结构 fu ...

  3. linux ab压力测试工具及ab命令详解

    原文链接:https://blog.csdn.net/qq_27517377/article/details/78794409 yum -y install httpd-tools ab -v 查看a ...

  4. Pacemaker 介绍

    1. 简介 Pacemaker是一个集群资源管理者.他用资源级别的监测和恢复来保证集群服务(aka.资源)的最大可用性.它可以用你所擅长的基础组件(Corosync或者是Heartbeat)来实现通信 ...

  5. Java基础学习篇---------继承

    一.覆写(重写) 1.含义:子类的定义方法.属性和父类的定义方法.属性相同时候 方法名称相同,参数相同以及参数的个数也相同,此时为覆写(重写) 扩充知识点: 覆盖:只有属性名字和方法名字相同,类型.个 ...

  6. Python3.5 学习十二 数据库介绍

    MYSQL介绍: 主流三种数据库:Oracle.Mysql.Sqlserver Mysql安装和启动: windows 1安装 2启动服务 3进入bin目录,打开命令行 4 mysqladmin -u ...

  7. 世界线(bzoj2894)(广义后缀自动机)

    由于春希对于第二世代操作的不熟练,所以刚使用完\(invasion process\)便掉落到了世界线之外,错综复杂的平行世界信息涌入到春希的意识中.春希明白了事件的真相. 在一个冬马与雪菜同时存在的 ...

  8. Flask从入门到精通之大型程序的结构一

    尽管在单一脚本中编写小型Web 程序很方便,但这种方法并不能广泛使用.程序变复杂后,使用单个大型源码文件会导致很多问题.不同于大多数其他的Web 框架,Flask 并不强制要求大型项目使用特定的组织方 ...

  9. webpack快速入门——给webpack增加babel支持

    1.Babel的安装与配置 Babel其实是几个模块化的包,其核心功能位于称为babel-core的npm包中,webpack可以把其不同的包整合在一起使用,对于每一个 你需要的功能或拓展,你都需要安 ...

  10. 深入理解java内存模型

    深入理解Java内存模型(一)——基础 深入理解Java内存模型(二)——重排序 深入理解Java内存模型(三)——顺序一致性 深入理解Java内存模型(四)——volatile 深入理解Java内存 ...