未公开API函数揭秘——通用对话框

原创 2002年02月28日 09:00:00

未公开API函数揭秘——通用对话框

未公开API函数揭秘——通用对话框


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).


       以上代码来自: 源代码数据库(SourceDataBase)
           当前版本: 1.0.458
               作者: Shawls
           个人主页: Http://Shawls.Yeah.Net
             E-Mail: ShawFile@163.Net
                 QQ: 9181729

未公开API函数揭秘——通用对话框

COMDLG32.DLL 为我们提供了一些很有用的对话框,但是仍然有部分我们可能会用到的系统对话框它却没有提供。如果试图复制这些系统对话框将是一件麻烦的苦差事。幸好shell32.dll为我们提供了这...
  • zcsor
  • zcsor
  • 2007年08月12日 21:59
  • 30957

未公开API函数揭秘――通用对话框

COMDLG32.DLL 为我们提供了一些很有用的对话框,但是仍然有部分我们可能会用到的系统对话框它却没有提供。如果试图复制这些系统对话框将是一件麻烦的苦差事。幸好shell32.dll为我们提供了这...
  • wanyuehan
  • wanyuehan
  • 2005年01月04日 19:35
  • 614

未公开API函数揭秘——通用对话框

COMDLG32.DLL 为我们提供了一些很有用的对话框,但是仍然有部分我们可能会用到的系统对话框它却没有提供。如果试图复制这些系统对话框将是一件麻烦的苦差事。幸好 shell32.dll为我们提供了...
  • wangweixing2000
  • wangweixing2000
  • 2008年03月30日 21:50
  • 730

如何调用未公开的API函数

 Windows SDK开发包中并未提供所有的API函数,在本文中我将讨论如何调用这种未公开的API函数。事实上所有未公开的API函数都和其它的API函数一样包含在系统的动态链接库中,调用这些函数的方...
  • nicholasmaxwell
  • nicholasmaxwell
  • 2007年05月16日 22:55
  • 795

利用微软未公开的WindowsAPI函数关闭或注销或重新启动计算机

众所周知,微软公开的用来关闭、注销、重新启动计算机的API是ExitWindowsEx。在Windows95/98下,可直接用ExitWindowsEx,即可正确关闭、注销、重新启动计算机;因Wind...
  • chenjl1031
  • chenjl1031
  • 2012年02月29日 11:37
  • 2176

未公开Windows API SHChangeNotifyRegister实现文件监控

在Windows实现文件监控有三种方法,第一种是“虚拟文件系统驱动”方法,如windows 下的filemon,网上有很多关于他的分析。第二种方法是“HOOK API”方法,钩子技术。第三种方法是“消...
  • crystal0011
  • crystal0011
  • 2014年06月01日 09:19
  • 3788

Windows未公开的API

Windows未公开的API,一本找了很久的资料,有需要的朋友可以下载
  • playboy1
  • playboy1
  • 2011年10月31日 14:20
  • 741

API通用对话框

#include#include#include#include#include"7_5.h"OPENFILENAME ofn;//定义一个OPENFILENAME结构HINSTANCE hInst;...
  • binyanye1
  • binyanye1
  • 2010年09月09日 08:24
  • 1278

Win API通用对话框之GetOpenFileName

作为《windows程序设计》对话框-podpad3.c,其是一个大一些的程序了, 这样的大块头, 如果你想消化它, 得慢慢来, 我们首先看GetOpenFileName函数和OPENFILENAME...
  • whoami021
  • whoami021
  • 2013年12月06日 02:17
  • 1465

关于windows驱动层调用未公开API

一般驱动层开发都会调用到ntoskrnl,ntdll导出的API,如果直接使用的话,会报identifier not found的错误。其实API已经实现了,我们的驱动是有内核负责加载的,应该就可以读...
  • qq429205464
  • qq429205464
  • 2016年08月05日 09:50
  • 462
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:未公开API函数揭秘——通用对话框
举报原因:
原因补充:

(最多只允许输入30个字)