上例中便是调用GetSystemMenu函数的

C# Windows API操纵系统菜单讲解 针对C# .net 中没有提供直接的类似SystemMenu的属性或类似GetSystemMenu的成员函数的情况,通过调用 Windows API设计了一个C#类SystemMenu,从而实现了传统的对于系统菜单的操作。 立即下载



有如下问题请教各位:

1.  为什么程序在调用window api或者dll中的输出函数时用的形式是
:00401375 FF1514324000            Call dword ptr [00403214]

上例中便是调用GetSystemMenu函数的.
我感到疑惑的是难道这个函数的入口地址每次在window启动时都放在内存00403214处吗?且我反编译后没有403214这个地方。

2.  静态反编译软件如w32dasm是如何根据这个地址知道了函数名字的?如下
* Reference To: USER32.GetSystemMenu, Ord:0145h
                                  |
:00401375 FF1514324000            Call dword ptr [00403214]
:0040137B 50                      push eax

3.  是不是Call dword ptr [XXXXXXXX] 只能用于系统的dll中的导出函数?

谢谢! 
 
回复时引用此帖 返回顶端

普通会员
普通会员

资 料:
注册日期: Jul 2004
帖子:  99  rockhard 品行端正
精华:  4
现金: 205 Kx
致谢数: 0
获感谢文章数:0
获会员感谢数:0
2  旧 2005-10-19, 09:36:11  默认
rockhard 当前离线

自己想明白了, 

call dword prt [XXXXXXXX]

此处的XXXXXXXX就是FirstThunk (IMAGE_IMPORT_DESCRIPTOR 结构中的一个成员) 指向的IMAGE_THUNK_DATA 数组中的某个元素的值。此值在程序装入内存时由装载器将它替换成实际函数的地址。 

有如下问题请教各位:

1.  为什么程序在调用window api或者dll中的输出函数时用的形式是
:00401375 FF1514324000            Call dword ptr [00403214]

上例中便是调用GetSystemMenu函数的.
我感到疑惑的是难道这个函数的入口地址每次在window启动时都放在内存00403214处吗?且我反编译后没有403214这个地方。

2.  静态反编译软件如w32dasm是如何根据这个地址知道了函数名字的?如下
* Reference To: USER32.GetSystemMenu, Ord:0145h
                                  |
:00401375 FF1514324000            Call dword ptr [00403214]
:0040137B 50                      push eax

3.  是不是Call dword ptr [XXXXXXXX] 只能用于系统的dll中的导出函数?

谢谢! 
 
回复时引用此帖 返回顶端

普通会员
普通会员

资 料:
注册日期: Jul 2004
帖子:  99  rockhard 品行端正
精华:  4
现金: 205 Kx
致谢数: 0
获感谢文章数:0
获会员感谢数:0
2  旧 2005-10-19, 09:36:11  默认
rockhard 当前离线

自己想明白了, 

call dword prt [XXXXXXXX]

此处的XXXXXXXX就是FirstThunk (IMAGE_IMPORT_DESCRIPTOR 结构中的一个成员) 指向的IMAGE_THUNK_DATA 数组中的某个元素的值。此值在程序装入内存时由装载器将它替换成实际函数的地址。 
vb禁用窗体最大化、最小化和关闭快捷菜单.rar vb禁用窗体最大化、最小化和关闭快捷菜单,禁用最大化、最小化不可用,重点实现了禁止关闭窗口的功能,禁止后窗口上的关闭按钮变成灰色不可点击了,在实现方面,核心代码如下:   Private Sub Form_Load()    RemoveMenu GetSystemMenu(Me.hWnd, 0), SC_COLSE, MF_REMOVE//禁止关闭    RemoveMenu GetSystemMenu(Me.hWnd, 0), SC_MAXIMIZE, MF_REMOVE//禁止最大化    RemoveMenu GetSystemMenu(Me.hWnd, 0), SC_MINIMIZE, MF_REMOVE//禁止最小化   End Sub 立即下载

相关推荐

C#左侧导航菜单(动态生成)

左侧导航菜单,是根据nzwangjian做的菜单的基础上做了部分的修改,给大家做个参考,可以在此基础上读取数据库的数据,来动态生成导航菜单。 写的比较粗超,还请见谅哈~~

C# 控制窗体系统菜单

 using System;using System.Collections.Generic;using System.Text;using System.Windows.Forms;using System.Diagnostics;using System.Runtime;using System.Runtime.InteropServices;namespace CustomerBrows

小流星子学习博客 2173

VB 禁用控制菜单里的按钮

VB 禁用控制菜单里的按钮 VB 禁用控制菜单里的按钮

GetSystemMenu AppendMenu 和 deleteMenu

GetSystemMenu  函数功能:该函数允许应用程序为复制或修改而访问窗口菜单(系统菜单或控制菜单)。  函数原型:HMENU GetSystemMenu(HWND hWnd,BOOL bRevert);  参数:  hWvd:拥有窗口菜单拷贝的窗口的句柄。  BPevert:指定将执行的操作。如果此参数为FALSE,GetSystemMenu返回当前使用窗口菜单的拷贝的句柄。该拷贝初始

4952

从个体到群体:Cartool实战静息态EEG微状态聚类全解析

本文详细解析了使用Cartool软件进行静息态EEG微状态聚类的完整实战流程。从个体水平聚类到群体模板提取,再到指标量化,文章深入探讨了k-means算法的应用、GFP峰值数据的使用技巧以及关键参数设置,为脑电信号处理研究者提供了从数据准备到结果解读的全方位指南。

weixin_29062671的博客 290

深入解析高通Adreno DPU的DRM/KMS驱动架构与硬件协同设计

本文深入解析了高通Adreno DPU的DRM/KMS驱动架构与硬件协同设计,详细介绍了Adreno DPU的核心模块组成、显示接口设计以及DRM驱动架构。通过实际案例和调试技巧,帮助开发者理解硬件与软件的协同工作原理,优化显示性能并解决常见问题。

weixin_29266679的博客 438

Win32 Api(显示程序系统菜单)

即在程序标题栏上右键时弹出的菜单此菜单会根据窗体的状态而不同,如最大化状态时则如上图1.GetSystemMenuThe GetSystemMenu function allows the application to access the window menu (also known as the system menu or the control menu) for copyin

clingingboy的专栏 1794

自动驾驶仿真 (三)—— 基于PreScan与Simulink的AEB系统仿真

自动驾驶仿真三—— 基于PreScan&Simulink的AEB系统仿真1. AEB自动紧急制动系统1. 1 TTC碰撞时间模型1. 2 C-NCAP法规部分术语与定义1. 3 主动安全ADAS系统试验项目2. AEB仿真分析建模2.1 搭建场景2.2 传感器建模2.3 添加AEB控制系统3. 典型工况仿真3.1 CCRs仿真测试3.1 CCRm仿真测试4. 参考学习的书目教材 博主前面的博文已经介绍了Prescan&Simulink基本的场景建模及仿真分析流程,《自动驾驶仿真 (二)——

zhudj08的博客 1万+

C#+Windows API操纵系统菜单

一、前言  本文针对C#.NET中没有提供直接的类似SystemMenu的属性或类似GetSystemMenu的成员函数的情况,通过调用Windows API设计了一个C#类SystemMenu,从而实现了传统的对于系统菜单的操作。  二、系统菜单简介  当你单击窗口图标或右击窗口标题栏时系统菜单即弹出。它包含当前窗口的默认行为。不同窗口的系统菜单看起来有些不同,如一个正常窗口的系统菜单看起来与一

小华的专栏 1374

从RadixTree到哈希表:深入对比SGLang和vLLM的Prefix Cache实现差异

本文深入对比了SGLang与vLLM在大语言模型推理服务中实现Prefix Cache(前缀缓存)的两种核心方案。SGLang采用基于Radix Tree的RadixAttention,支持任意长度前缀的精确匹配与灵活复用;vLLM则采用基于哈希表的方案,深度集成于PagedAttention,实现简洁但要求块级精确对齐。文章剖析了二者在设计哲学、内存管理、适用场景及集群级优化(如Prefix Cache Aware Routing)上的关键差异,为高性能LLM服务的技术选型提供决策依据。

blockchain9miner的博客 956

别再只调电压了!深入理解数控电源的CC/CV模式与双闭环PID控制(以BUCK电路为例)

本文深入解析数控电源的CC/CV模式与双闭环PID控制技术,以BUCK电路为例,探讨如何通过双闭环控制优化负载突变响应和模式切换稳定性。文章详细介绍了电压环与电流环的协同工作原理、PID参数整定技巧及工程实践中的非线性补偿方法,帮助工程师提升电源设计的智能控制能力。

weixin_27017211的博客 265

对窗口的系统菜单(SystemMenu)的一些操作

                                              对窗口的系统菜单(SystemMenu)的一些操作                                                               周银辉   有时候想禁用/移除/添加一些系统菜单项目,那么你可能会用到下面的API,以C#平台调用为例: [DllImpor...

weixin_33978044的博客 731

ANPC三电平拓扑:两种调制方式解析

ANPC结构是基于“I”型NPC结构(下面讲NPC如不特殊说明,均指的是“I”型结构NPC)发展出来的一种改进型。我们在讲NPC结构的时候会谈到他的一个缺点就是损耗分布不均匀,会导致温升不均衡,进而限制模块的功率输出能力。而ANPC结构由于多了两个开关管以及相应的两个中性点换流回路(如下图),可以更加灵活任意的配置开关管可以使损耗没有那么的不均衡,从而能一定程度上提高模块的输出功率。ANPC拓扑结构图以及增加的环流回路。

IOTBOT的博客 9494

GetSystemMenu

函数功能:该函数允许应用程序为复制或修改而访问窗口菜单(系统菜单或控制菜单)。 函数原型:HMENU GetSystemMenu(HWND hWnd,BOOL bRevert); 参数: hWnd:拥有窗口菜单拷贝的窗口的句柄。 bRevert:指定将执行的操作。如果此参数为FALSE,GetSystemMenu返回当前使用窗口菜单的拷贝的句柄。该拷贝初始时与窗口菜单相同,

legend的专栏 1282

uniapp [全端兼容] - 最新详细实现拍摄视频录像并可播放预览视频,调起本机摄像头开启录像录制完毕后保存到本机临时存放,可对拍摄的视频进行压缩处理减少文件大小不损失画质,详解录制视频并读取播放!

uni-app,h5移动端网页,微信小程序,支付宝小程序,Android安卓,苹果ios,app,nvue,录视频,拍视频,拍摄录制视频后上传服务器,调起摄像头录视频并可预览,录视频上传,录像,uniapp录制视频并上传,录制视频并保存到本地设备,如何本地保存并播放预览,提供给用户观看MP4视频录像并上传到后端服务器完整功能源码,视频压缩,mp4文件,删除视频,录像后怎么预览,临时视频文件怎么减少压缩大小,视频压缩及上传,自己录视频并生成可播放的文件,录视频并能打开查看,视频压缩后上传,本机相册,录完怎么预

🏆 前端领域优质创作者 1万+

CXSMILES细则-用于在 SMILES 字符串后存储分子的特殊特征

Chemaxon 扩展 SMILES/SMARTS 用于在 SMILES 字符串后存储分子的特殊特征。任何信息都可以存储在 SMILES 字符串后,只要它们由空格或制表符字符分隔,因为 SMILES 解析器会忽略这些信息,或者将它们作为注释使用。扩展特征以以下格式存储:Chemaxon 的扩展 SMILES/SMARTS 不包含非 ASCII 字符,它们通常以字符代码 n 的形式被转义为 &#n;。在 S-group 中,ASCII 字符“,”、“;”、“|”、“{”、“}”也以这种方式转义。此外,符号“$

ASKCOS博客 402

getsystemmenu

      函数功能:该函数允许应用程序为复制或修改而访问窗口菜单(系统菜单或控制菜单)。    函数原型:HMENU GetSystemMenu(HWND hWnd,BOOL bRevert);    参数:    hWvd:拥有窗口菜单拷贝的窗口的句柄。    BPevert:指定将执行的操作。如果此参数为FALSE,GetSystemMenu返回当前使用窗口菜单的拷贝的句柄。该拷贝初始时与窗

435

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Windows菜单函数 - GetSystemMenu

VB声明Declare Function GetSystemMenu Lib "user32" Alias "GetSystemMenu" (ByVal hwnd As Long, ByVal bRevert As Long) As Long说明取得指定窗口的系统菜单的句柄。在vb环境,“系统菜单”的正式名称为“控制菜单”,即单击窗口左上角的控制框时

水木清华 1347

数学建模模型总结

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

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

MFC学习笔记——ASSERT、GetSystemMenu、IDM_ABOUTBOX

介绍一段代码: 在系统菜单中添加字符串资源IDS_ABOUTBOX和菜单资源IDM_ABOUTBOX。 // IDM_ABOUTBOX 必须在系统命令范围内。 // 低4位是系统内部使用的 ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); // 如果一个应用程序增加命令到窗口菜单,应该使用小于0xF000的标识符

山上有只羊M 8224

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

GetSystemMenu(FALSE)

GetSystemMenu(FALSE)         参数为False时返回当前窗口系统菜单(窗口标题栏右键弹出的移动、大小、最大化等)的句柄。         系统菜单是指我们点击窗体左上角的小图标时所弹出的菜单,其中好象有“恢复”.“移动”.“最大化”.“最小化”.“关闭”这么几个按钮.这个菜单用普通的方法是不能编辑与改变的,但是我们可以通过api函数getsystemmenu来得到它

immad的专栏 1101

GetSystemMenu AppendMenu 和 deleteMenu .

GetSystemMenu   函数功能:该函数允许应用程序为复制或修改而访问窗口菜单(系统菜单或控制菜单)。   函数原型:HMENU GetSystemMenu(HWND hWnd,BOOL bRevert);   参数:   hWvd:拥有窗口菜单拷贝的窗口的句柄。   BPevert:指定将执行的操作。如果此参数为FALSE,GetSystemMenu返回当前使用窗口菜单的拷贝的

haixiuyundezhuanyong的专栏 394

CMenu* CWnd::GetSystemMenu()

CWnd::GetSystemMenu 允许应用访问"控制"菜单进行复制和修改。 CMenu* CWnd::GetSystemMenu(BOOL bRevert) const; //\\ /*bRevert:指定要执行的操作。如果bRevert为FALSE,GetSystemMenu将返回当前使用的"控制"菜单的副本的句柄。此副本最初与控制菜单相同,但可以被修改。如果bRevert为TRUE,Ge...

HayPinF的博客 794
上一篇: 继续谈下调用约定
下一篇: call
linuxheik
博客等级 码龄15年 865粉丝 135原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值