精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>● VB和Basic>>〓〓..API 函数使用..〓〓>>系统操作和其他>>转载:没有公开的API函数

主题:转载:没有公开的API函数
发信人: cobe(cobe)
整理人: winsy(2003-03-05 15:53:24), 站内信件
下文转载自:Tencent社区VBnBasic版

---------------------------------
  对于Windows的API函数,大家一定都有所了解。API的全称是Application Programming Interface。API函数调用是通过在VB中定义和调用Windows动态连接库中的函数从而扩展VB程序的功能。API函数的定义和调用方法在微软的开发工具中都有详细的说明。 

    那么什么是“未公开”函数呢?我个人认为,就是微软在开发Windows时,把一些不常用或是比较危险的函数,封装在系统中,但没有在任何开发文档提供函数说明和定义。而这些函数有很多还都是有用的。幸运的是一些有心之人对Windows系统动态连接库做了十分详细的分析,从而将这些未公开函数公开以供广大开发人员共享。 

    首先,向大家介绍的是Windows下未公开的关闭Windows的函数。在Windows API函数中虽然提供了ExitWindowsEx这样的API函数,但是在有一些程序中我们需要象一些程序安装完毕那样提示用户重新启动计算机或者不重新启动计算机。或者要在程序中弹出关闭系统对话框。要实现这些功能就要使用Windows未公开函数了。下面来看具体说明。 

这就是未公开函数的定义,注意在Alias之后没有使用函数的真正名字,而是用了函数编号,这是因为微软没有公开函数名。 

Declare Function SHRestartSystemMB Lib "shell32" Alias "#59" _ 
    (ByVal hWnd As Long, ByVal sExtraPrompt As String, ByVal uFlags As Long) As Long 
Declare Function SHShutDownDialog Lib "shell32" Alias "#60" _ 
    (ByVal uGuess As Long) As Long 

以下是对这两个函数使用的具体说明。 

SHRestartSystemMB是用来调用“系统设置改变(重新启动或关闭系统)”对话框的。 

    参数: 
    hWnd 当前窗口句柄。 
    sExtraPrompt 加在系统默认提示前的自定义提示信息。必须为Unicode编码,所以要先用 
         StrConv()函数转换。 
    uFlags 操作标志。0 - 重新启动系统;1 - 关闭系统。(不同版本的Windows可能会有所不同, 
         大家可以在使用的时候自己试验。) 

    返回值: 
    和普通对话框一样,根据点击不同的按钮返回不同的值。是 - vbYes;否 - vbNo。 

    调用实例与结果显示: 
    SHRestartSystemMB Me.hWnd, StrConv("你好,", vbUnicode), 0 
    SHRestartSystemMB Me.hWnd, StrConv("你好,", vbUnicode), 1 

SHShutDownDialog是用来调用“关闭Windows”对话框的。 

    参数: 
    无意义,写0即可。 

    返回值: 
    和普通对话框一样,根据点击不同的按钮返回不同的值。是 - vbYes;否 - vbNo。 

    调用实例与结果显示: 
    SHShutDownDialog 0 

    以上程序实例在Visual Basic 6.0(SP5),Windows 2000 Professional下运行通过。 
    Windows下未公开的API函数还有很多,以后我将会一一向大家介绍。 
----------------------------------
转载结束,谢谢作者和大家


----
╭──────╮+-+-+-+-+-+-+-+-+-+-+-+
│ cobe │   VB小世界
│发贴子专用章│  打印机监控程序
│ QQ号码 │
│250172│  北京社区VB版
╰──────╯+-+-+-+-+-+-+-+-+-+-+-+ 

[关闭][返回]