未公开API函数揭秘——通用对话框
发布日期:2021-06-29 03:43:29 浏览次数:2 分类:技术文章

本文共 1404 字,大约阅读时间需要 4 分钟。

COMDLG32.DLL 为我们提供了一些很有用的对话框,但是仍然有部分我们可能会用到的系统对话框它却没
有提供。如果试图复制这些系统对话框将是一件麻烦的苦差事。幸好shell32.dll为我们提供了这些对话
框,本文将带你去发掘一些未公开的API函数,以实现这些对话框。在使用未公开的API函数之前,你必须知道声明未公开的API函数与声明那些公开的API函数略有不同,那
就是,你必须用到未公开API函数的顺序号(ordinal number)。这个顺序号就是未公开函数的别名。也
就是说在声明未公开API函数时,必须加上它的别名。例如下面要说到的PickIconDlg函数的顺序号为62,
它的别名就是"#62"。如果不这样做,系统会提示你找不到函数的入口点。选取图标BOOL WINAPI PickIconDlg(     HWND     hwndOwner,      LPSTR    lpstrFile,      DWORD    nMaxFile,      LPDWORD  lpdwIconIndex);该函数的顺序号为62。hwndOwner拥有该对话框的窗口句柄 lpstrFile指向一个缓冲,包含初始的文件名。函数返回后它就包含
新的文件名。nMaxFile指定缓冲的大小,以字符为单位。 lpdwIconIndex指向一个变量其中包含基于零
的图标的索引。函数返回后它包含新图标的索引值。 如果用户选择了图标,则返回值为真,如果用户选择
取消按钮或是系统菜单的关闭选项则返回值为假。运行程序对话框void WINAPI RunFileDlg(     HWND    hwndOwner,      HICON   hIcon,      LPCSTR  lpstrDirectory,      LPCSTR  lpstrTitle,      LPCSTR  lpstrDescription,     UINT    uFlags);该函数的顺序号为61。在VB中可声明如下:Private Declare Function RunFileDlg Lib "shell32" Alias "#61" (ByVal hwndOwner _
As Long, ByVal hIcon As Long, ByVal lpstrDirectory As String, ByVal lpstrTitle _
As String, ByVal lpstrDescription As String, ByVal uFlags As Long) As Long其中uFlags参数的可选值为RFF_NOBROWSE 0x01 Removes the browse button. RFF_NODEFAULT 0x02 No default item selected. RFF_CALCDIRECTORY 0x04 Calculates the working directory from the file name. RFF_NOLABEL 0x08 Removes the edit box label. RFF_NOSEPARATEMEM 0x20 Removes the Separate Memory Space check box (Windows NT
only).
 

转载地址:https://blog.csdn.net/zcsor/article/details/1739836 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:在VB中用API实现多媒体
下一篇:如何为你的应用程序设置热键?

发表评论

最新留言

路过,博主的博客真漂亮。。
[***.116.15.85]2024年04月10日 16时33分15秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

CRISC备考重点知识解读 2019-04-29
推荐信息安全书籍27本(含电子书) 2019-04-29
攻防对抗蓝队必修课——文末有文档模板分享 2019-04-29
云计算领域的安全威胁如何应对? 2019-04-29
你了解三证合一的数据保护官(DPO)吗? 2019-04-29
小白入门网络安全,需要学习哪些内容? 2019-04-29
如何找回丢失的比特币 2019-04-29
日本交易所Zaif因黑客攻击损失近6000万美元 2019-04-29
以太坊智能合约如何运作? 2019-04-29
赛迪全球公链指数第5期名单:EOS、ETH排名不变 比特股首进前3 2019-04-29
能依靠0.21个比特币生存21天吗 2019-04-29
比特币核心发现网络漏洞CVE-2018-17144 社区敦促所有节点尽快升级补丁 2019-04-29
泰达币对比特币价格的影响不具有统计意义 2019-04-29
Atitit nlp自然语言处理类库(java python nodejs c#net) 目录 1.1. Python snownlp 1 1.2. NLP.js一个nodejs/javascri 2019-04-29
Atitit nlp用到的技术与功能自然语言处理 v3 t99.docx Atitit nlp用到的技术与常见类库 目录 1. 常用的技术 1 1.1. 语言处理基础技术 分词 相似度等 1 1.2 2019-04-29
Atitit 2000drmmr v2 t05.docx Atitit 2000drmmr v1 t99 2000.1.26 hs,yweywe jla n dashw ner kl .na ni 2019-04-29
常见方案 目录 1. 发现目前 WEB 上主流的视频直播方案有 HLS 和 RTMP, 1 2. 实现直播的方法有很多,但是常用的,就这几个。 3个直播协议:rtmp、rtsp、hls。 和三个端: 2019-04-29
Atitit 直播问题总结ffmpeg 目录 1.1. 屏幕太大,可以使用-s调整分辨率 1 1.2. Full size 1 1.3. 流畅度调整 1 2. 1 2.1. 没有录音 1 2.2. 2019-04-29
paip.索引优化---sql distict—order by 法 2019-04-29
paip.输入法编程---带ord gudin去重复- 2019-04-29