• 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

  • 相关阅读:
    tensorflow 查看模型输入输出saved_model_cli show --dir ./xxxx --all
    tensorflow models api:ValueError: Tensor conversion requested dtype string for Tensor with dtype float32: 'Tensor("arg0:0", shape=(), dtype=float32, device=/device:CPU:0)'
    python,ModuleNotFoundError,is not a package
    在docker集群下,使用VNC,物理机器重启后VNC失败解决
    2、闵氏空间
    1、爱因斯相对论(狭义相对论)
    tensorflow object detection api graph rewriter
    tensorflow_目标识别object_detection_api,RuntimeError: main thread is not in main loop,fig = plt.figure(frameon=False)_tkinter.TclError: no display name and no $DISPLAY environment variable
    目标检测识别在排除标注不标准问题下,为什么得分最高的框,不一定是最准的框.
    JS中各种变量类型在条件判断为false的情况
  • 原文地址:https://www.cnblogs.com/zzh1236/p/3198517.html
Copyright © 2020-2023  润新知