Windows 实验总结

article/2025/10/29 5:16:51

关于DLL的生成地址

在CreateDLL.cpp文件中,我定义了两个函数,同时这里
在这里插入图片描述
__stdcall:Windows API默认的函数调用协议。
在头文件做好相对应的定义:
在这里插入图片描述
__declspec(dllexport)

将一个函数声名为导出函数,就是说这个函数要被其他程序调用,即作为DLL的一个对外函数接口。
通常它和extern “C” 合用

这是由于在制作DLL导出函数时由于 C++ 存在函数重载,因此__declspec(dllexport) FUNCTION(int,int) 在DLL会被decorate,例如被decorate成为 function_int_int,而且不同的编译器decorate的方法不同,造成了在用GetProcAddress取得FUNCTION地址时的不便,使用extern "C"时,上述的decorate不会发生,因为C没有函数重载,如此一来被extern"C"修饰的函数,就不具备重载能力

(1)C编译器的函数名修饰规则
对于__stdcall调用约定,编译器和链接器会在输出函数名前加上一个下划线前缀函数名后面加上一个“@”符号和其参数的字节数

(2)C++编译器的函数名修饰规则
C++的函数名修饰规则有些复杂,但是信息更充分,通过分析修饰名不仅能够知道函数的调用方式,返回值类型,甚至参数个数、参数类型。

同时针对上面的,无论是添加extern "C"还是不添加,都不是我们想要的函数名,.h头文件的作用仅仅能导出动态库、明确编译链接方式及确定入口点约定,还一个重要作用是打包给开发者,使其了解动态库导出的函数及对应的的参数,为了确保导出函数名及入口点函数不变,此时需添加.def文件

使用def文件的意义
将编译器生成的函数修饰去掉,用更加自然、更加容易理解、更加容易记忆的名字来命名函数

def文件导出的动态库DLL既可以保证函数名不变也可以保证动态库DLL的入口点函数名不变,同时在.cpp文件中函数定义中加入__stdcall就可以实现导出的DLL被其它语言调用,此时.h头文件的作用仅仅打包给开发者,供其查看导出的函数名及相应参数而已

先将解决方案切换到Release模式,再生成项目

默认情况下,项目属性的设置的目录起点为项目配置文件所在的位置,实际上就是项目头文件和源文件所在的位置。

C++项目,则解决方案总目录下包含一个项目文件夹,在vs编译器中生成debug和release解决方案后,总目录下还会生成对应的debug和release目录,存放最终生成的exe或dll文件,同时也会在项目文件夹下生成debug和release目录(存放的是中间编译文件obj)。
在这里插入图片描述
在vs2010的项目属性页,会有一些系统变量,如下:
SolutionDir:解决方案目录
Configuration:指debug或release
ProjectName:项目名字
OutDir:在 常规–输出目录 中定义的值,如 ( S o l u t i o n D i r ) (SolutionDir) (SolutionDir)(Configuration)\,表示XXX\lolution\debug\目录值
IntDir:中间目录
TargetDir:生成exe或dll文件所在位置,如链接器-常规-输出文件为 ( O u t D i r ) (OutDir) (OutDir)(TargetName)$(TargetExt)(即定义了exe输出位置,也就决定了TargetDit的值),此时TargetDir表示在XXX\lolution\debug
TargetName:目标输出名,不包括扩展名
TargetPath:目标输出文件的全路径名
ProjectDir:表示项目目录值,一般在“调试-工作目录”中设置该值
TargetExt:扩展名
PlatformToolsetVersion:
ConfigurationName:配置名字,通常是Debug或者Release

关于Windos消息机制

FindWindow用法
函数功能:该函数获得一个顶层窗口的句柄,该窗口的类名和窗口名与给定的字符串相匹配。这个函数不查找子窗口。在查找时不区分大小写。
函数型:HWND FindWindow(LPCTSTR IpClassName,LPCTSTR IpWindowName);
参数
IpClassName :指向一个指定了类名的空结束字符串,或一个标识类名字符串的成员的指针。如果该参数为一个成员,则它必须为前次调用theGlobafAddAtom函数产生的全局成员。该成员为16位,必须位于IpClassName的低 16位,高位必须为 0。
IpWindowName:指向一个指定了窗口名(窗口标题)的空结束字符串。如果该参数为空,则为所有窗口全匹配
返回值:如果函数成功,返回值为具有指定类名和窗口名的窗口句柄;如果函数失败,返回值为NULL。
C#中使用该函数首先导入命名空间:
在这里插入图片描述
如果接收者的Text中不是在sender中定义的
在这里插入图片描述
在这里插入图片描述
SendMessage使用方法
函数功能:该函数将指定的消息发送到一个或多个窗口。此函数为指定的窗口调用窗口程序,直到窗口程序处理完消息再返回。而函数PostMessage不同,将一个消息寄送到一个线程的消息队列后立即返回。
函数原型
LRESULT SendMessage(HWND hWnd,UINT wMsg,WPARAM wParam,LPARAM IParam)
参数:
hWnd:其窗口程序将接收消息的窗口的句柄。如果此参数为HWND_BROADCAST,则消息将被发送到系统中所有顶层窗口,包括无效或不可见的非自身拥有的窗口、被覆盖的窗口和弹出式窗口,但消息不被发送到子窗口。
wMsg用于区别其他消息的常量值,这些常量可以是Windows单元中预定义的常量,也可以是自定义的常量.
wParam通常是一个与消息有关的常量值,也可能是窗口或控件的句柄
lParam通常是一个指向内存中数据的指针。由于WParm、lParam和Pointer都是32位的,因此,它们之间可以相互转换
返回值:返回值指定消息处理的结果,依赖于所发送的消息。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


http://chatgpt.dhexx.cn/article/cD458nhE.shtml

相关文章

java实验总结_java第一次实验总结第三周总结

Java第一次实验报告,java开发环境与简单的Java程序 一.实验目的 1.熟悉JDK开发环境 2.熟练掌握结构化程序设计方法 二.实验内容 打印输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其中各位数字立方和等于该数本身。例如&#xff0c…

关于计算机网络安全实验报告总结,信息安全实验总结报告

信息安全实验总结报告 篇一:信息安全实验报告 课程名称: 信息安全 实验名称: 共五次实验 班级: 姓名: 同组人: 指导教师评定: 签名: 实验一 木马攻击与防范 一、实验目的 通过对木马的练习,使读者理解和掌握木马传播和运行的机制;通过手动删除木马,掌握检查木马和删…

Android Studio实验小结

hello,刚上手AS的小白总是会遇到各种问题。现在写个博客,记录一下这次实验遇到的问题 1、AS运行时总是Wating for Target Device to Come Online 状况:明明看见进度条已经到头了,app却仍然不能launch 解决方法:最直…

springboot-安全认证security+jwt总结

目录 一、背景 二、基本jar依赖引入 三、security模块 1、编写配置类 2、UnauthorizedHandler代码 3、security验证用户名和密码的部分 四、jwt模块 1、jwt原理部分 2、jwt一共需要四个类 五、总结 一、背景 要做一个后台管理系统,会引入多个系统&#x…

璀璨盛启·焕美升级 上颜集团杭州医学旗舰中心盛大启幕

2023年4月26日,「璀璨盛启焕美升级」上颜杭州医学旗舰中心启幕盛典在杭州滨江钱龙大厦耀新启幕。上颜用审美、匠心构建城市的活力与色彩,致力于为客户带来全新的美丽方式和一流的品质服务。 (上台剪彩嘉宾从左至右依次为)上颜集团…

尚品汇项目难点及解决

v-router重写push、replace方法 问题描述:当页面再次进入同一个路由地址时,控制台报错 解决方法:修改vue-router的配置文件,也就是router/index.js文件 //重写VueRouter.prototype身上的push方法了 VueRouter.prototype.push …

技术·融合·治理|众享链网2021发布会暨试运行启动仪式成功举办

2021年6月,工业和信息化部、中央网信办共同发布《关于加快推动区块链技术应用和产业发展的指导意见》,建设多方协同共赢的先进产业链,打造多技术融合的区块链生态体系已成为新的发展方向。如何能让所有人都有机会参与这场区块链的产业变革&am…

尚品汇前端项目难点

尚品汇前端项目 1.如何运行后浏览器自动打开 ​ 解决方法:找到package.json 找到 script serve 后面加 –open 2.打开后发现第一次打开网页显示http://0.0.0.0:8080/ 的网页可能暂时无法连接,或者它已永久性地移动到了新网址。 解决方法:…

九龙证券|券商春季策略扎堆来袭 风格切换成焦点

2月以来,国泰君安、中信建投、国金证券等10余家券商组织相继发布2023年春季战略。综合来看,组织对A股持达观预期,未来两三个月A股商场或迎来重要切换。风格上,“中心财物,生长接力”或许成为上半年装备主线&#xff0c…

分击合进,锦江之星酒店与白玉兰酒店再领投资热潮

2022年11月11日,「山水画中游,暇享好时光」品牌品鉴会在广西桂林隆重召开。锦江酒店(中国区)旗下两大酒店品牌锦江之星酒店和白玉兰酒店携手亮相本次活动。 (品牌矩阵品鉴会活动现场) 后疫情时代&#xff…

盛世昊通打造好品艺拍线上交易平台,助力推广中国艺术文化

艺术品交易市场这两年的发展可谓是空前热烈,诸多艺术品皆迎来变现需求。新时代背景下,有数字技术的加持,数字文化资产作为数字经济发展的重要组成部分,成就了文化交易市场蓝海。 为响应国务院“全面复兴传统文化”,“提…

上海亚商投顾:沪指高开低走涨0.45% 大消费王者归来

上海亚商投顾前言:无惧大盘大跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。 市场情绪 沪指今日高开低走,深成指、创业板指较为强势,盘中均涨超2%,午后涨幅有所收窄。…

《扬帆优配》互联互通扩容提升港股市场活力

作为国际最敞开的自由港和重要的国际金融中心之一,香港衔接内地与国际的优势不断稳固。自2022年以来,互联互通机制屡获打破性进展,港交所发挥“超级联系人”的效果不断提高。 今年3月,跟着港股通进一步扩容,一批成长型…

活动回顾丨研发效能度量线下沙龙圆满举办

2月18日,由跬智信息(Kyligence)联合甄知科技主办的研发效能度量线下沙龙圆满举办。本次沙龙在 Kyligence 上海总部举办,Kyligence 联合创始人兼 CTO 李扬、腾讯 Tech Lead 茹炳晟,以及甄知科技创始人兼 CTO 张礼军在现…

2023COSP深圳户外展行业高峰论坛即将召开!博洋优选也将参加

2023COSP深圳户外展将在3月17日—19日,于深圳福田会展中心举办,此次展会邀请到知名品牌企业领头人、商协会负责人、圈内大咖;由市场趋势的洞察入手,多维度、多角度进行深度分享,引导行业从业者,以更宏观、更…

精彩回顾 | 客户体验官俱乐部(CEOC)首届主题论坛在深圳圆满落幕

2021年10月29日,客户体验官俱乐部(Customer Experience Officer Club,CEOC)首届主题论坛在深圳益田威斯汀酒店圆满落幕。本次论坛由客户体验官俱乐部主办,瀚一数据科技(深圳)有限公司和才博&…

尚好房 04_服务拆分

尚好房:服务拆分 一、业务介绍 1、项目模块划分 根据前面的介绍,目前我们的系统规划了3个dubbo服务提供者模块:权限服务、房源服务与会员服务,及2个服务消费者模块:尚好房管理平台(web-admin&#xff09…

纯正体验,极致商务 | 丽亭酒店聚焦未来赛道,实现共赢发展

10月28日,锦江酒店(中国区)“齐鲁集锦 共话未来”投资人交流会在济南盛大召开,面向华东地区投资人,行业专家、商旅客、品牌代表齐聚一堂,共同聚焦酒店市场投资新价值,商讨新时代酒店行业新机遇,多维探索酒店…

2023尚上优选-社区团购 优选电商Spring Cloud Alibaba

尚上优选2023最新企业级微服务架构项目 分布式微服务后端VUE、小程序 尚上优选是真实居住社区内居民团体的一种互联网线上线下购物消费行为,是依托真实社区的一种区域化、小众化、本地化、网络化的团购形式。简而言之,它是依托社区和团长社交关系实现生…

尚品汇项目搭建

文章目录 一些问题大体流程一、基础配置路由7)路由的跳转8)路由传参9)重写replace|和push方法10)router和route axios引入进度条vuex三级联动防抖节流 Home组件轮播图mock共用组件Carousel 二.search页面内查看接口格式发送请求获取数据面包屑…