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

本文共 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月08日 19时19分46秒

关于作者

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

推荐文章