C#关于外挂汉化的一些思考(API函数FindWindow,FindWindowEx,SendMessage)(转)
这次我们试着运用C#的API函数去修改别的程序的标题文本(适用范围C#)
其实这是FindWindow,FindWindowEx,SendMessage的应用举例之一
也就是所谓的外挂汉化.
需要用到的工具是
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)(转)的更多相关文章
- 【APP设计利器】Sketch 41 Mac中文破解版(含汉化插件)
Sketch是一款拥有美观界面和强大功能适用于所有设计师的专业矢量绘图工具.它旨在为美术设计师创造出一款更优秀的作品,不是复制品,而是提升品.Sketch简约的设计是基于无限的规模和层次的绘图空间,免 ...
- PotPlayer播放器 莫尼卡汉化绿色版 V1.6.48089 32位
软件名称: PotPlayer播放器 莫尼卡汉化绿色版 软件语言: 简体中文 授权方式: 免费软件 运行环境: Win7 / Vista / Win2003 / WinXP 软件大小: 10.5MB ...
- axure下载及汉化
第一步:下载axure rp 6.5英文原版 axure6.5官方英文下载地址: Windows版:http://t.cn/zW7JifS 第二步:安装汉化语言包 axure6.5汉化语言包中文包下载 ...
- 真正的汉化-PowerDesigner 16.5 汉化
一.背景 经常使用PowerDesigner,之前使用15版本,后来16出来后,就一直在使用16,不过一直是英文.一些同事对使用英文版总显示有些吃力. 遍寻百度.必应,都没有找到真正的针对版本16的汉 ...
- CentOS下Zabbix安装部署及汉化
搭建环境:Centos6.5_x86_64,Zabbix2.4.5,epel 源 服务端: 1.安装开发软件包yum -y groupinstall "Development Tools&q ...
- pycharm2016.3.1激活及汉化
pycharm快捷键 PyCharm设置python新建文件指定编码为utf-8 Python | 设置PyCharm支持中文 0, 注册码 43B4A73YYJ-eyJsaWNlbnNlSWQiOi ...
- jquery dataTable汉化(插件形式)
1.jquery dataTable.js 官网:http://datatables.net/ 中文:http://dt.thxopen.com/ 2.汉化提示信息(放到xx.js中,引入即可) 注: ...
- ENGLISH抠脚童鞋的福利--GitHub汉化插件
今天在某前端群看到一个插件,激动万分啊!我就把插件使用实现的步骤分享一下! 打开chrome浏览器输入地址:chrome://extensions/ : 跳转到其他页面,点击左上角--扩展程序: 将T ...
- TinyMCE的使用(包括汉化及本地图片上传功能)
TinyMCE我就不多介绍了,这是下载地址:https://www.tinymce.com/download/ 下载下来是英文版,要汉化也很简单.首先去网上随便下载个汉化包,然后把汉化包解压后的lan ...
随机推荐
- Nginx & AWStats 安装、配置、使用
—— 参考IBM文章:THIS , 不一样的指导顺序 —— 1. awstats分析nginx - access.log,网上资料大部分都是下载,然后配置.官网下载地址: http://awstats ...
- iOS开发实践:一个类微博客户端从启动到与用户交互的过程
本文基于数据字典和数据流图两种工具讲述一个完整微博客户端的实现.数据字典和数据流图都可以用来表达线程的执行流程,同时定义了需要的类,是进一步设计类的基础. 数据字典实际上是一张表,表的第一个字段是程序 ...
- oracle归档日志增长过快处理方法
oracle归档日志一般由dml语句产生,所以增加太快应该是dml太频繁 首先查询以下每天的归档产生的情况: SELECT TRUNC(FIRST_TIME) "TIME", SU ...
- 关于Android Studio升级到2.0后和Gradle插件不兼容的问题
今天升级AS到2.0后,用AS在真机上调试,发现报了如下错误: This version of Android Studio is incompatible with the Gradle Plugi ...
- [端API] 控件在一个页面里open了,但其他页面打开这个控件怎么关闭
加在控件的参数里<script type="text/javascript" src="../script/api.js"></script& ...
- Android Studio如何快速生成get,set,tostring,构造函数
刚开始使用Android Studio时,在创建一个javabean时,很习惯的在JavaBean类中,右键去找生成get,set等选项.但是很遗憾,找不到. 那这边如何快速的set,get或者生成构 ...
- 浅析android下如何通过jni监控wifi网络连接、dhcpcd执行和power电源控制
libs/android_runtime/android_net_wifi_Wifi.cpp部分jni接口static JNINativeMethod gWifiMethods[] = {{ &quo ...
- 分布式发布订阅消息系统 Kafka 架构设计
我们为什么要搭建该系统 Kafka是一个分布式.分区的.多副本的.多订阅者的“提交”日志系统. 我们构建这个系统是因为我们认为,一个实现完好的操作日志系统是一个最基本的基础设施,它可以替代一些系统来作 ...
- iframe 透明
iframe是迫不得已才使用的,因为使用iframe会带来较多的问题,而有的浏览器可以设置将iframe当作广告屏蔽. 在最近的一个工作内容中使用了iframe,开始遇到的问题是iframe高度自适应 ...
- PHP 魔术方法总结
1.__get.__set 这两个方法是为在类和他们的父类中没有声明的属性而设计的 __get( $property ) 当调用一个未定义的属性时访问此方法 __set( $property, $va ...