这次我们试着运用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

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

  1. 【APP设计利器】Sketch 41 Mac中文破解版(含汉化插件)

    Sketch是一款拥有美观界面和强大功能适用于所有设计师的专业矢量绘图工具.它旨在为美术设计师创造出一款更优秀的作品,不是复制品,而是提升品.Sketch简约的设计是基于无限的规模和层次的绘图空间,免 ...

  2. PotPlayer播放器 莫尼卡汉化绿色版 V1.6.48089 32位

    软件名称: PotPlayer播放器 莫尼卡汉化绿色版 软件语言: 简体中文 授权方式: 免费软件 运行环境: Win7 / Vista / Win2003 / WinXP 软件大小: 10.5MB ...

  3. axure下载及汉化

    第一步:下载axure rp 6.5英文原版 axure6.5官方英文下载地址: Windows版:http://t.cn/zW7JifS 第二步:安装汉化语言包 axure6.5汉化语言包中文包下载 ...

  4. 真正的汉化-PowerDesigner 16.5 汉化

    一.背景 经常使用PowerDesigner,之前使用15版本,后来16出来后,就一直在使用16,不过一直是英文.一些同事对使用英文版总显示有些吃力. 遍寻百度.必应,都没有找到真正的针对版本16的汉 ...

  5. CentOS下Zabbix安装部署及汉化

    搭建环境:Centos6.5_x86_64,Zabbix2.4.5,epel 源 服务端: 1.安装开发软件包yum -y groupinstall "Development Tools&q ...

  6. pycharm2016.3.1激活及汉化

    pycharm快捷键 PyCharm设置python新建文件指定编码为utf-8 Python | 设置PyCharm支持中文 0, 注册码 43B4A73YYJ-eyJsaWNlbnNlSWQiOi ...

  7. jquery dataTable汉化(插件形式)

    1.jquery dataTable.js 官网:http://datatables.net/ 中文:http://dt.thxopen.com/ 2.汉化提示信息(放到xx.js中,引入即可) 注: ...

  8. ENGLISH抠脚童鞋的福利--GitHub汉化插件

    今天在某前端群看到一个插件,激动万分啊!我就把插件使用实现的步骤分享一下! 打开chrome浏览器输入地址:chrome://extensions/ : 跳转到其他页面,点击左上角--扩展程序: 将T ...

  9. TinyMCE的使用(包括汉化及本地图片上传功能)

    TinyMCE我就不多介绍了,这是下载地址:https://www.tinymce.com/download/ 下载下来是英文版,要汉化也很简单.首先去网上随便下载个汉化包,然后把汉化包解压后的lan ...

随机推荐

  1. Nginx & AWStats 安装、配置、使用

    —— 参考IBM文章:THIS , 不一样的指导顺序 —— 1. awstats分析nginx - access.log,网上资料大部分都是下载,然后配置.官网下载地址: http://awstats ...

  2. iOS开发实践:一个类微博客户端从启动到与用户交互的过程

    本文基于数据字典和数据流图两种工具讲述一个完整微博客户端的实现.数据字典和数据流图都可以用来表达线程的执行流程,同时定义了需要的类,是进一步设计类的基础. 数据字典实际上是一张表,表的第一个字段是程序 ...

  3. oracle归档日志增长过快处理方法

    oracle归档日志一般由dml语句产生,所以增加太快应该是dml太频繁 首先查询以下每天的归档产生的情况: SELECT TRUNC(FIRST_TIME) "TIME", SU ...

  4. 关于Android Studio升级到2.0后和Gradle插件不兼容的问题

    今天升级AS到2.0后,用AS在真机上调试,发现报了如下错误: This version of Android Studio is incompatible with the Gradle Plugi ...

  5. [端API] 控件在一个页面里open了,但其他页面打开这个控件怎么关闭

    加在控件的参数里<script type="text/javascript" src="../script/api.js"></script& ...

  6. Android Studio如何快速生成get,set,tostring,构造函数

    刚开始使用Android Studio时,在创建一个javabean时,很习惯的在JavaBean类中,右键去找生成get,set等选项.但是很遗憾,找不到. 那这边如何快速的set,get或者生成构 ...

  7. 浅析android下如何通过jni监控wifi网络连接、dhcpcd执行和power电源控制

    libs/android_runtime/android_net_wifi_Wifi.cpp部分jni接口static JNINativeMethod gWifiMethods[] = {{ &quo ...

  8. 分布式发布订阅消息系统 Kafka 架构设计

    我们为什么要搭建该系统 Kafka是一个分布式.分区的.多副本的.多订阅者的“提交”日志系统. 我们构建这个系统是因为我们认为,一个实现完好的操作日志系统是一个最基本的基础设施,它可以替代一些系统来作 ...

  9. iframe 透明

    iframe是迫不得已才使用的,因为使用iframe会带来较多的问题,而有的浏览器可以设置将iframe当作广告屏蔽. 在最近的一个工作内容中使用了iframe,开始遇到的问题是iframe高度自适应 ...

  10. PHP 魔术方法总结

    1.__get.__set 这两个方法是为在类和他们的父类中没有声明的属性而设计的 __get( $property ) 当调用一个未定义的属性时访问此方法 __set( $property, $va ...