C#关于外挂汉化的一些思考(API函数FindWindow,FindWindowEx,SendMessage)(转)

这次我们试着运用C#的API函数去修改别的程序的标题文本(适用范围C#)

其实这是FindWindow,FindWindowEx,SendMessage的应用举例之一

也就是所谓的外挂汉化.

 

附:Windows消息大全

 

需要用到的工具是

Microsoft Visual C#

Spy++ Lite

 

而我们今天要尝试修改的程序就是

GTA4Center(被搞过很多次了)

如图:

需要调用的函数是:

findwindow

[DllImport("user32.dll", EntryPoint="FindWindow")]
public static extern int FindWindow (string lpClassName,string lpWindowName);


FindWindowEx

[DllImport("user32.dll", EntryPoint="FindWindowEx")]
public static extern int FindWindowEx (int hWnd1,int hWnd2,string lpsz1,string lpsz2);

 

SendMessage 

[DllImport("user32.dll", EntryPoint="SendMessage")]
public static extern int SendMessage (int hwnd,int wMsg,int wParam,ref int lParam);

 

 其中Sendmessage中后面两个参数我把他修改成string型 

 

[DllImport("user32.dll", EntryPoint="SendMessage")]
public static extern int SendMessage (int hwnd,int wMsg,string wParam,string lParam); 

 

下面就正式开始了

在程序顶部中加入 using System.Runtime.InteropServices;

在public partial class Form1 : Form{}

中加入上面的参数

以便使用API函数

新建一个Form,然后加入一个Button

如图:

从SPY++中获得主程序的标题文本

findwindow函数的用法

[DllImport("user32.dll", EntryPoint="FindWindow")]
public static extern int FindWindow (string lpClassName,string lpWindowName);

 

 int a = FindWindow("要找的类名","窗体名称");  //a就是程序句柄

在Button1的代码中填入相关语句以便找到程序句柄 

int handelA;
handelA = FindWindow("WindowsForms10.Window.8.app.0.378734a", "GTA IV Control Center v1.0 - [Player and Game Data]");

使用MessageBox来检查handelA是已经获得句柄,若返回值为0,则失败.

 

如图:

 

现在可以看到,GTA4C的窗口句柄是722322,成功了.

 

既然有了程序句柄,那么就可以尝试对其进行修改了,这时我们运用SendMessage函数

[DllImport("user32.dll", EntryPoint="SendMessage")]
public static extern int SendMessage (int hwnd,int wMsg,string wParam,string lParam);

SendMessage的用法

SendMessage(句柄,消息的标识符,"取决于消息","取决于消息");

 

从CSDN中可以查到消息 WM_SETTEXT =0x000C

那么可得
SendMessage(handelA, 0x000C, "", "哥要你改标题");

运行效果如图:

 

 

 

 

 

 

 

有关如何不轻易漏掉其中一个关键的子窗口,这里我推荐用SPY++的窗口选项

如图

点击"子窗口列表"便能一级一级查看下去了

接下来我们可以思考一下怎么修改子窗口的名称了.

同理可得,只要得到相关句柄就能作出下一步操作,这时候我们用到FindWindowEx

[DllImport("user32.dll", EntryPoint="FindWindowEx")]
public static extern int FindWindowEx (int hWnd1,int hWnd2,string lpsz1,string lpsz2);

FindWindowEx用法

int B = FindWindowEx (父窗口句柄,int hWnd2,类名1,类名名称);

以下引用解释

//hWnd2 ----------  Long,从这个窗口后开始查找。这样便可利用对FindWindowEx的多次调用找到符合条件的所有子窗口。如设为零,表示从第一个子窗口开始搜索

 从SPY++中可以找到其中的子窗体1的类名为
"WindowsForms10.MDICLIENT.app.0.378734a"

可从

handelB = FindWindowEx(handelA, 0, "WindowsForms10.MDICLIENT.app.0.378734a", "");

中得到"WindowsForms10.MDICLIENT.app.0.378734a"的句柄,用同一个方法,可以得到下一级窗体的

Player and Game Data的句柄

handelC = FindWindowEx(handelB ,0,"WindowsForms10.Window.8.app.0.378734a", "Player and Game Data");

下一级的句柄同样方法获得

handelD = FindWindowEx(handelC, 0, "WindowsForms10.Window.8.app.0.378734a", "Player Health (0):");

就是如图这个位置的句柄

既然得到了句柄那么就可以SendMessage了,如下

 

SendMessage(handelA, 0xc, "", "GTA4控制中心");

SendMessage(handelD, 0xc, "", "生命值:");

 

运行后效果得到

 

 

思路就提到这里,昨晚无聊的时候突然想到还有这种方法,大家无聊不妨试试

除此之外,这里是对于FindWindow,FindWindowEx,SendMessage的一些用法提示.

或许有更简单更踏实的实现方式,下次再探究

 

整个程序的代码如下

//分割线//

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;   //必须

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        [DllImport("user32.dll", EntryPoint = "FindWindow")]
        public static extern int FindWindow(string lpClassName, string lpWindowName);

        [DllImport("user32.dll", EntryPoint = "FindWindowEx")]
        public static extern int FindWindowEx(int hWnd1, int hWnd2, string lpsz1, string lpsz2);

        [DllImport("user32.dll", EntryPoint = "SendMessage")]
        public static extern int SendMessage(int hwnd, int wMsg, string wParam, string lParam);

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender,EventArgse)
        {
            int handelA, handelB,handelC,handelD;
            handelA = FindWindow("WindowsForms10.Window.8.app.0.378734a", "GTA IV Control Center v1.0 - [Player and Game Data]");
            handelB = FindWindowEx(handelA, 0, "WindowsForms10.MDICLIENT.app.0.378734a", "");
            handelC = FindWindowEx(handelB ,0,"WindowsForms10.Window.8.app.0.378734a", "Player and Game Data");
            handelD = FindWindowEx(handelC, 0, "WindowsForms10.Window.8.app.0.378734a", "Player Health (0):");
            SendMessage(handelA, 0xc, "", "GTA4控制中心");
            SendMessage(handelD, 0xc, "", "生命值:");
            MessageBox.Show(handelD.ToString(),handelA.ToString());
        }
    }
}

//分割线//

以下是全部的Windows消息, 对于未在MSDN上的消息的WPARAM, LPARAM参数解释正确的给分
最高300[开贴加]
[已知 :0x0313, 0x01e2, 0x01e5, 0x01eb, 0x006a]
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

0x00F8-0x00FF

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

0x01F5-0x01F7

0x01F8-0x01FF

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

转载于:https://www.cnblogs.com/zzh1236/p/3198517.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值