Windows各种内置消息

通过 AppSwitch 禁用 WPF 内置的触摸让 WPF 程序可以处理 Windows 触摸消息 WPF 框架自己实现了一套触摸机制,但同一窗口只能支持一套触摸机制,于是这会禁用系统的触摸消息(WM_TOUCH)。这能够很大程度提升 WPF 程序的触摸响应速度,但是很多时候又会产生一些 Bug。 如果你有需要,可以考虑禁用 WPF 的内置的实时触摸(RealTimeStylus)。本文介绍禁用方法,使用 AppSwitch,而不是网上广为流传的反射方法。 本文内容如何设置 AppSwitch... 阅读详情

MFC在VS2010\VC\atlmfc\include\afxmsg_.h中宏定义的Windows消息的消息映射表,即将某Windows消息同其响应函数关联的宏定义:
Window Notifications

在这里插入图片描述
1、WM_CREATE消息
在这里插入图片描述
消息响应函数OnCreate(LPCREATESTRUCT lpCreateStruct)传入参数是一个指向CREATESTRUCT结构体对象的指针:
Windows Procedures窗口过程:

//VS2010:
class CWnd:public CCmdTarget
protected:
	// for processing Windows messages
	virtual LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam);
	virtual BOOL OnWndMsg(UINT message, WPARAM wParam, LPARAM lParam, LRESULT* pResult);
//VS2010中afxwin.h中CWnd::WindowProc成员函数与微软官网的全局WindowProc函数不是一个东西,前者由this窗口调用,后者则需要传入窗口句柄,Window precedure概念理解这里看LRESULT CALLBACK WindowProc()
//[https://docs.microsoft.com官方最新文件中WindowProc函数](https://docs.microsoft.com/en-us/previous-versions/windows/desktop/legacy/ms633573%28v=vs.85%29?redirectedfrom=MSDN)
LRESULT CALLBACK WindowProc(
  _In_ HWND   hwnd,
  _In_ UINT   uMsg,
  _In_ WPARAM wParam,
  _In_ LPARAM lParam
);

Window Procedures
每个窗口都有一个关联的窗口过程——一个处理所有发送到该(窗口)类的所有窗口的所有消息的函数。一个窗口各个方面的外观和行为都取决于window procedure对这些消息的响应。
一、关于窗口过程:
每个窗口都是特定窗口类的成员。窗口类确定单个窗口(对象)用于处理其消息的默认窗口过程。属于同一(窗口)类的所有窗口都使用相同的默认窗口过程。例如,系统为组合框类COMBOBOX定义了一个窗口过程window procedure。然后,所有组合框(对象)都将使用该窗口过程window procedure。
应用程序通常注册至少一个新的窗口类及其关联的窗口过程(自定义窗口类往往派生自CWnd基类,而CWnd基类定义了WindowProc()窗口过程函数?)。注册一个(窗口)类后,应用程序类可以创建该类的许多窗口,所有这些窗口都使用相同的窗口过程函数WindowProc()。因为这意味着多个源可以同时调用同一段代码,所以从窗口过程修改共享资源时必须小心。有关更多信息,请参见窗口类Window Classes.
1.1
窗口过程的结构
窗口过程函数WindowProc是具有4个参数并返回带符号值的函数。这些参数包括一个窗口句柄(微软官网最新的全局WindowProc函数与VS2010中afxwin.h中CWnd::WindowProc成员函数不是一个东西,后者由this窗口调用,前者则需要传入窗口句柄)、一个UINT消息标识符以及两个使用WPARAM和LPARAM数据类型声明的消息参数。
消息参数通常包含其低位和高位字信息。应用程序使用几个宏来从消息参数中提取信息:

//...
#define MAKEWORD(a, b)      ((WORD)(((BYTE)(((DWORD_PTR)(a)) & 0xff)) | ((WORD)((BYTE)(((DWORD_PTR)(b)) & 0xff))) << 8))
#define MAKELONG(a, b)      ((LONG)(((WORD)(((DWORD_PTR)(a)) & 0xffff)) | ((DWORD)((WORD)(((DWORD_PTR)(b)) & 0xffff))) << 16))
#define LOWORD(l)           ((WORD)(((DWORD_PTR)(l)) & 0xffff))
#define HIWORD(l)           ((WORD)((((DWORD_PTR)(l)) >> 16) & 0xffff))
#define LOBYTE(w)           ((BYTE)(((DWORD_PTR)(w)) & 0xff))
#define HIBYTE(w)           ((BYTE)((((DWORD_PTR)(w)) >> 8) & 0xff))
    返回值的解释取决于特定的消息。
    1.2
    默认窗口过程
    默认的窗口过程函数DefWindowProc()定义了所有窗口共享的某些基本行为。默认的窗口过程为窗口提供了最少的功能。应用程序定义的窗口过程应将未处理的任何消息传递给DefWindowProc()函数,以进行默认处理,该函数确保处理所有消息。DefWindowProc()函数用窗口过程WindowProc()函数接收到的相同参数调用。
LRESULT LRESULT DefWindowProcA(
  HWND   hWnd,
  UINT   Msg,
  WPARAM wParam,
  LPARAM lParam
);
   1.3
   窗口过程子类化
   当应用程序创建窗口时,系统会分配一块内存,用于存储特定于该窗口的信息,包括处理该窗口消息的窗口过程的地址。当系统需要将消息传递给窗口时,它将在特定于窗口的信息中搜索窗口过程的地址,然后将消息传递给该过程函数。
   应用程序通过将窗口的原始窗口过程的地址替换为新窗口过程的地址(称为子类过程)来对窗口进行子类化。此后,子类过程接收发送或发布到窗口的任何消息。
   子类化是一种技术,它允许应用程序在窗口有机会处理它们之前,拦截和处理发送或发布到特定窗口的消息(这是窗口的原窗口过程的工作)。通过子类化窗口,应用程序可以扩充、修改或监视窗口的行为。应用程序可以将属于系统全局类(直接派生自CWnd类)的窗口(例如,编辑控件或EditCtrl列表框List Box)子类化(即替换其窗口过程)。例如,应用程序可以将编辑控件子类化,以防止该控件接收某些字符(检测到这些字符输入后并不会在Edit Control控件中UpdateData()显示,同时可以Tip提示)。但是,不能将属于另一个应用程序的窗口或类子类化(即子类化是针对某个应用程序的窗口类或控件类的,另一应用程序的窗口类或控件类不受影响)。所有子类化必须在同一过程中执行 (All subclassing must be performed within the same process)。
   子类过程在收到消息时可以采取三个动作:它可以将消息传递给原始窗口过程,修改消息并将其传递给原始窗口过程,或者处理该消息而不将其传递给原始窗口过程。如果子类过程处理消息,则可以在将消息传递到原始窗口过程之前,之后或之前和之后进行处理。
   系统提供两种类型的子类:实例和全局。在实例子类化中,应用程序替换窗口的单个实例(窗口对象)的窗口过程地址。应用程序必须使用实例子类化来子类化现有窗口。在全局子类化中,应用程序替换窗口类的WNDCLASS结构中的窗口过程地址。使用该类创建的所有后续窗口都具有子类过程的地址,但是该类的现有窗口不受影响。
   1.3.1
   实例子类化
   应用程序使用SetWindowLongA()函数将窗口的实例(窗口对象)子类化。
LONG SetWindowLongA(
  HWND hWnd,
  int  nIndex,
  LONG dwNewLong
);
   应用程序将GWL_WNDPROC标志(nIndex)、窗口的句柄(hWnd)传递给子类,并将子类过程(自定义新的窗口过程函数)的地址(dwNewLong)传递给SetWindowLongA。子类过程可以驻留在应用程序的可执行文件或DLL中。
   SetWindowLongA()返回窗口原始窗口过程的地址。应用程序必须保存该地址,以便在后续对CallWindowPro()函数的调用中使用该原始窗口过程的地址,已将截获的消息传递给原始窗口过程。应用程序还必须具有原始的窗口过程地址,才能从窗口类删除子类。为了删除子类,应用程序再次调用SetWindowLongA(),将原始窗口过程的地址与GWL_WNDPROC标志和窗口句柄一起传递给窗口(即SetWindowLongA()函数相当于用传入的窗口过程函数地址替换前一窗口过程函数地址)。
   由于实例子类化是在创建窗口之后(产生窗口对象句柄)发生的,因此您无法向该窗口添加任何额外的字节。子类化窗口的应用程应使用窗口的属性列表来存储子类化窗口的实例所需的任何数据。???
   当应用程序对子类化窗口进行子类化时,它必须以与执行相反的顺序删除子类。如果移除顺序不正确,则可能发生不可恢复的系统错误。???
   1.3.2
   全局子类化
   ???

afxwin.h文件中声明了MFC中设备描述表类CDC、菜单类CMenu、基窗口类CWnd、基对话框类CDialog、各种控件类、应用程序类CWinApp

typedef struct tagCREATESTRUCTA {
  LPVOID    lpCreateParams;
  HINSTANCE hInstance;
  HMENU     hMenu;
  HWND      hwndParent;
  int       cy;
  int       cx;
  int       y;
  int       x;
  LONG      style;
  LPCSTR    lpszName; //表示该窗口类所在的应用程序名
  LPCSTR    lpszClass;
  DWORD     dwExStyle;
} CREATESTRUCTA, *LPCREATESTRUCTA;

2、WM_COPYDATA消息

/*一个应用程序发送WM_COPYDATA消息以将数据传递给另一个应用程序*/
#define ON_WM_COPYDATA() \
	{ WM_COPYDATA, 0, 0, 0, AfxSig_bWCDS, \
		(AFX_PMSG)(AFX_PMSGW) \
		(static_cast< BOOL (AFX_MSG_CALL CWnd::*)(CWnd*, COPYDATASTRUCT*) > ( &ThisClass :: OnCopyData)) },

OnCopyData()函数处理WM_COPYDATA消息从一个应用程序传到另一个应用程序 逼格太高还没用过
3、WM_DESTROY消息
在这里插入图片描述

4、WM_MOVE消息
在这里插入图片描述
消息响应函数OnMove(int x,int y)传入(x,y)为窗口客户区左上角的x,y坐标。

template <typename NumType>
char* Num2Char(NumType Num)
{
	const type_info& t=typeid(Num);
	const char* TypeName=t.name();
	char* Result=new char[327];
	if(TypeName[0]=='i'&&TypeName[1]=='n'&&TypeName[2]=='t')
	{
		int Digit=0,ten=1000000000; //int –2147483648至十进制2147483647
		int index=0;
		Result[index++]=Num<0?'-':' ';
		while(ten>=1)
		{
			Digit=std::abs(Num)/ten;
			Num-=(std::abs(Num)/ten)*ten;
			Result[index++]=('0'+Digit);
			ten/=10;
		}
		Result[index]='\0';
		//cut the front '0's
		index=0;
		for(;;)
		{
			if(Result[index]=='0'||Result[index]==' '){++index;}
			else break;
		}
		for(int i=0;i<index;++i) ++Result;
		return Result;
	}
	else if(TypeName[0]=='f'&&TypeName[1]=='l'&&TypeName[2]=='0'||TypeName[0]=='d'&&TypeName[1]=='o'&&TypeName[2]=='u')
	{
		return Result;
	}
	else return Result;
}

5、WM_SIZE消息
要使对话框窗口能改变大小,需在建立MFC应用程序时——用户界面功能,选中最小化框、最大化框
在这里插入图片描述
6、WM_ACTIVATE消息
WM_ACTIVATE消息发送到被激活的窗口和被禁用的窗口。如果窗口使用相同的输入队列,则消息将同步发送,首先发送到被停用的顶层窗口的窗口过程,然后发送到被激活的顶层窗口的窗口过程。如果窗口使用不同的输入队列,则消息将异步发送,因此将立即激活窗口?

afx_msg void OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized);
/*nState表示this窗口被操作即将变成的状态
  nState=WA_ACTIVE(1)表示this窗口是通过鼠标单击以外的其他方法被激活的(例如,通过调用SetActiveWindow()函数或使用键盘界面选择窗口)。
  nState=WA_CLICKACTIVE(2)表示this窗口是通过鼠标单击被激活的。
  nState=WA_INACTIVE(3)表示this窗口被停用(即不处于被激活状态)。
  pWndOther被解释为 被激活或停用的窗口的句柄,取决于nState值。当为WA_INACTIVE时,pWndOther为正在被激活的窗口的句柄。当未WA_ACTIVE或WA_CLICKACTIVE时,pWndOther未正在被灭活的窗口的句柄(我调试时pWndOther始终为0x00)。该句柄可以为NULL
*/

在这里插入图片描述
7、WM_SETFOCUS消息

微信消息实现自动推送--方式一 成功啦 进来学 微信消息实现自动推送--方式一 成功啦! 进来学!!! 阅读详情

相关推荐

Win10下kafka简单安装及使用测试

注:kafka依赖于zookeeper,官网下载的kafka内置了zookeeper依赖。 1. 下载Kafka,网址:http://kafka.apache.org/ 解压缩: 2. 修改配置文件 进入到config目录,修改service.properties: 3. 进行单机实例测试简单使用 (1) 启动kafka内置的zookeeper 运行cmd命令: .\bin\windows...

走走停停的专栏 1186

通过setwindowlong设置的windows窗口样式总结

对于windows api中创建的窗口,可以通过SetWindowLong函数修改其样式。 函数声明为: LONG SetWindowLongA( HWND hWnd, int nIndex, LONG dwNewLong ); 第二个参数nIndex表示样式的类别,最常见的两个取值为GWL_EXSTYLE (扩展样式)和 GWL_STYLE(样式),分别包括: PS:怕有...

jigetage的专栏 2万+

13、黑莓手机的内置功能与调制解调器设置全解析

本文详细解析了黑莓手机的内置功能和作为调制解调器的设置方法。内置功能包括密码管理器、消息保存、娱乐游戏和高效搜索功能;调制解调器设置部分涵盖了GSM/GPRS/EDGE和CDMA/EVDO两种网络技术在不同Windows操作系统上的具体配置步骤。通过详细的操作指南和对比表格,用户可以轻松掌握如何将黑莓手机作为调制解调器连接互联网。

x1y2z的博客 177

SetWindowLong 用法总结

SetWindowLong 函数原型为:LONG SetWindowLong(HWND hwnd,int nIndex,Long dwNewLong);详见MSDN。下面简单总结一下SetWindowLong函数几种常用的地方:1.设置窗口风格   如:SetWindowLong(hWnd, GWL_STYLE, WS_POPUP|WS_BORDER);      //有边框的弹出窗口         SetWindowLong(hWnd, GWL_EXSTYLE,  WS_EX_TOOLWINDOW); 

firehood的专栏 2万+

Python入门:Python显示提示消息的多种姿势

Python入门:Python中显示提示消息的多种姿势

XiaoqiangClub的博客 401

易语言限制窗口移动

易语言限制窗口移动源码,限制窗口移动,处理,SetWindowLongA,CallWindowProcA,CopyMemory,CopyMemory1

易语言自定义窗口过程

为了处理自定义的窗口消息,因此我们必须要重载下窗口消息过程处理函数。 首先是定义我们的窗口过程,4个参数都是int,返回值是int: .版本 2 .支持库 spec .子程序 新窗口过程, 整数型 .参数 hwnd, 整数型 .参数 msg, 整数型 .参数 wParam, 整数型 .参数 lParam, 整数型 ' 处理代码...... ' 返回 (CallWindow

friendan的专栏 4017

英飞凌TC3xx DSADC旋变软解码实战:从示波器波形到VX1000数据,手把手教你避坑

本文详细介绍了英飞凌TC3xx系列微控制器的DSADC模块在电机旋变软解码中的实战应用。从示波器波形分析到VX1000数据采集,提供了一套完整的调试方法论,帮助工程师快速定位和解决常见问题,提升解码精度和系统性能。

weixin_30598225的博客 517

窗口子类化

BOOL HookGameProc(HWND hGame) { if(!lpPreWndProc) { lpPreWndProc=(WNDPROC)GetWindowLong(hGame,GWL_WNDPROC);//保存之前的窗口处理入口 SetWindowLongA(hGame,GWL_WNDPROC,(LONG)GameRecvProc);//窗口子类化,替换窗口过程 } return TR...

haodawei123的博客 401

三、分区配置

rk3566/rk3568 修改分区

暮云星影的博客 514

实战分享:如何利用svchost进程绕过360防护(附完整Shellcode注入教程)

本文深入解析系统进程安全防护机制,探讨svchost等关键进程的安全特性与防护策略。详细分析安全软件的行为检测和内存保护技术,提供系统加固与监控实践建议,助力企业构建多层次防御体系,有效应对潜在安全威胁。

weixin_30752699的博客 99

Windows 8.1正式版将内置Skype,放弃原有的消息应用

早在2013年4月,微软已经开始强制MSN(Messenger)客户端用户迁移到Skype   Windows 8.1正式版将内置Skype,放弃原有的消息(Messaging)应用,这么做的目的是为了主推Skype整合。     Windows 8.1针对Skype作了大量改进,比如锁屏界面中无需解锁直接接受语音和视频聊天。

Denny Duan's Technical World / 技术成就梦想改变生活。 2090

unity中基于NGUI实现一张图片上在某个地方挖个洞

按照策划的要求,引导时只有被引导的图片是高亮的,其余地方都是黑色半透明,如下图所示: 对应的实现shader如下: Shader "Unlit/TutorialBg" { Properties { _MainTex ("Base (RGB), Alpha (A)", 2D) = "black" {} _ClipRange0 ("Clip Vector

手机游戏开发 3698

企业微信应用 应用号内消息链接无法在企微内置浏览器打开 windows PC客户端 问题解决

需求是每周在企微的应用号上发送周报,周报中会带着进入系统的链接,点击进入可以查看详情。系统需要登录鉴权,因此需要在内置浏览器打开便于自动认证。但是,在企微应用号发送的链接,手机上可以正常使用企微内置浏览器打开,PC端却会在系统默认浏览器打开,而不是企微内置浏览器打开,导致oauth认证失败。注意:企微群聊机器人发送的链接可以正常打开,无此类问题,该问题仅出现在企微应用号上。

weixin_44670774的博客 4981

cesium加载天地图、OSM、谷歌底图

以上示例是加载矢量底图,若要加载影像或者其他只需要更换相应的url,在WebMapTileServiceImageryProvider中还要更改layer参数。url中’‘vec_w’,一些其他风格,基于CRAT渲染,两种方法效果差别不大。有两种方法加载天地图分别是。对应投影样式,具体可看。还要谷歌的一些卫星底图。

qq_44897914的博客 2998

利用netmq在相机应用于unity之间传输图像数据

Unity工业相机接入方案解析 本文探讨了在Unity中接入不同品牌工业相机的技术方案。研究发现: Basler相机可直接调用官方DLL(pylonc.net.dll)实现接入 海康和大恒相机因驱动DLL依赖C++组件,无法直接调用 解决方案:通过独立进程(相机应用程序)与Unity进行通信,采用NetMQ实现图像数据传输 技术实现要点: 相机端:使用PublisherSocket发布JPEG图像帧 Unity端:通过SubscriberSocket订阅图像数据 优化:设置高水位线控制缓存帧数,避免数据堆积

weixin_46450859的博客 417

RabbitMqWindows安装包:Windows系统下的消息队列解决方案

RabbitMqWindows安装包:Windows系统下的消息队列解决方案 【下载地址】RabbitMqWindows安装包 RabbitMq Windows 安装包为您提供了一站式的解决方案,帮助您在Windows系统上快速部署RabbitMq消息队列中间件。该安装包包含RabbitMq 3.11.9版本及配套的er...

gitblog_06777的博客 710

手把手教你学SOC芯片架构--NoC(片上网络,Network on Chip)全方位解析

​、​。

MHD0815的博客 863

【第五节】windows sdk编程:windows 控件基础

控件是 Windows 系统内置的窗口类,它们只能是某个窗口的子窗口。因此,创建控件时必须使用 `WS_CHILD` 风格。控件的窗口类由系统预先注册,因此我们不需要手动注册窗口类。控件的消息响应函数由 Windows 提供,而不是我们自己编写的。控件的行为由其内置的窗口回调函数处理。当控件发生某些行为时(如被点击或需要重绘),它会向其父窗口发送通知消息。

攻城狮7号的博客 1325

(考研湖科大教书匠计算机网络)第四章网络层-第三节3、4:划分子网的IPv4地址和无分类IP地址

子网掩码: 32比特的子网掩码可以表明分类IP地址的主机号部分被借用了几个比特作为子网号子网掩码使用连续的比特1来对应网络号和子网号子网掩码使用连续的比特0来对应主机号将划分子网的IPv4地址与其相应的子网掩码进行逻辑与运算就可得到IPv4地址所在子网的网络地址如下图。

快乐江湖的博客 1347

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

.NET消息队列的使用

在项目中使用消息队列,可以对消息提供方和消息消费方进行解耦,提高系统的灵活性和可拓展性。其中,企业级的消息队列中间件有IBMWebSphereMQ、Tibco EMS、HornetQ等等。微软的Windows系统也自带了消息队列的功能,可以在“启动或关闭Windows功能”中开启: 开启后在服务中查看消息队列服务是否运行: 接下来是简单的消息队列操作: using ...

alix123456的博客 210

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

信息化基础建设 消息引擎

消息引擎 1. 消息类型 2. 实现方法 消息类型 系统内置的实现,有二种类型,工作流消息和自定义消息。 工作流消息来自于工作流的设定,在不同的流程中,产生不同的讯息。比如,处理工程更改后,要通知工程部和生产部的相关负责人,这个功能直接在工作流中设置即可完成。 还有一类工作流消息,来自于系统内置的消息,比如,产生MRP运算之后,要产生大量的需求提示信息。在销售单过帐之后,也可发送...

weixin_30520015的博客 95

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Windows微信QQ防撤回完整教程:三分钟搞定消息保护终极方案

你是否曾因微信或QQ消息被撤回而错失重要信息?RevokeMsgPatcher正是为解决这一痛点而生的Windows平台专业工具,为你提供微信、QQ、TIM三大主流通讯软件的完整防撤回解决方案。这款开源工具通过精准的二进制补丁技术,从根本上拦截消息撤回指令,确保所有已接收的消息都能完整保留。无论是工作沟通中的重要文件,还是朋友间的有趣对话,都能一览无余,不再担心错过任何关键信息。 ## 📱 为

gitblog_01187的博客 914

【Windows 7系统中全新的游戏管理器】

在Windows Vista中微软推出了游戏管理器(Games Explorer),你可以利用它发布和管理游戏,包括内置的Windows游戏和PC游戏,比如纸牌、国际象棋和Windows Live游戏等。   在Windows 7中,游戏管理器中新增了很多功能,这些功能不仅能帮助普通玩家管理Windows 7中的内置游戏,而且对那些PC游戏玩家来说也会很有帮助。   当你第一次启动W...

dfy86404的博客 185

如何快速掌握消息防撤回:Windows通讯软件完整解决方案

你是否曾经因为重要信息被撤回而感到困扰?无论是工作群里的紧急通知、客户的重要需求,还是朋友分享的有趣内容,一旦被撤回就再也无法查看。今天我要为你介绍一款强大的开源工具——RevokeMsgPatcher,它能让你在Windows电脑上彻底告别"消息已撤回"的尴尬,还能实现微信多开功能,让你的通讯体验更加完整高效。 ## 🔥 那些让你抓狂的撤回瞬间 想象一下这些真实场景:工作群里同事发布了紧急

gitblog_00057的博客 483

gdsdecomp:从 PCK 提取 Godot 工程,并把 .gdc 字节码反编译回 .gd

Godot 发布出去的包里只有 .gdc 字节码和二进制资源,源码丢了基本没法从发行版里捞回来。gdsdecomp(GDRE Tools)就是干这件事的逆向工具:把 .pck、.apk 或内嵌了包的 EXE 丢给它,能拿回工程文件、把 GDScript 批量反编译成可编辑的 .gd,并把导入过的资源还原回原始格式,覆盖 Godot 2.x/3.x/4.x。适合做项目恢复,或者想拆解一款成品游戏内部

gitblog_00322的博客 685
上一篇: 类class AFX_MODULE_STATE (global data for a module) 一个模块的全局相关数据 可由全局函数AfxGetModuleState()得到
下一篇: Windows消息与内嵌函数名或自定义函数名响应函数之间关联的语法其实是宏
HayPinF
博客等级 码龄9年 175粉丝 140原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值