标题:[讨论]API函数怎么定义格式?
只看楼主
HaCk的旋律
Rank: 1
等 级:新手上路
威 望:1
帖 子:73
专家分:0
注 册:2006-12-1
 问题点数:0 回复次数:7 
[讨论]API函数怎么定义格式?
刚刚在学API函数..感觉挺好玩的...

但开始摸不到头绪了..

比如:

ExitWindowsEx
VB声明
Declare Function ExitWindowsEx Lib "user32" Alias "ExitWindowsEx" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long
说明
退出windows,并用特定的选项重新启动
返回值
Long,非零表示成功,零表示失败。会设置GetLastError
参数表
参数 类型及说明
uFlags Long,指定下述一个或多个标志(用OR运算符合并到一起)
EWX_FORCE 强迫中止没有响应的进程
EWX_LOGOFF 中止进程,然后注销
EWX_SHUTDOWN 关掉系统电源(如果可能的话,ATX电源就可以)
EWX_REBOOT 重新引导系统
EWX_SHUTDOWN 关闭系统
dwReserved Long,保留,设为零
注解
这个函数调用后会立刻返回,系统关闭过程是在后台进行的。注意先中止自己的应用程序,使关闭过程更显平顺。当然,您的进程必须有足够的优先权,否则也不能执行这种操作


这个只是解释说明该函数的作用而已..并没有谈及到该函数的用法及书写格式...

其他的也是一样...我都有点郁闷了..

哪位大虾指点一下小弟...
搜索更多相关主题的帖子: API 函数 定义 格式 
2007-03-04 01:02
PcrazyC
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:5652
专家分:0
注 册:2006-10-20
得分:0 
参数列表已经很明确的告诉你怎么用了,那些常数比如EWX_SHUTDOWN之类的,都可以在API浏览器中查找到,定义一下就是了,API函数和你自己定义的函数一样,你怎么用你自己定义的函数就怎么用API函数就是了,只不过多一步声明而矣

[此贴子已经被作者于2007-3-4 9:31:48编辑过]



雁无留踪之意,水无取影之心
2007-03-04 09:30
HaCk的旋律
Rank: 1
等 级:新手上路
威 望:1
帖 子:73
专家分:0
注 册:2006-12-1
得分:0 

参数列是很明确...

我就是不懂把他们怎么组合起来.然后应用到程序中啊..

比如这个吧:
GetVolumeInformation(drive_chr, strlabel, Len(strlabel), serial_no, 0, 0, strtype, Len(strtype))

格式是怎么组成的啊..


做我所想! 欢迎大家加我好友@ Mailto: buxchang@
2007-03-04 10:42
PcrazyC
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:5652
专家分:0
注 册:2006-10-20
得分:0 

Declare Function GetVolumeInformation Lib "kernel32" Alias "GetVolumeInformationA" (ByVal lpRootPathName As String, ByVal lpVolumeNameBuffer As String, ByVal nVolumeNameSize As Long, lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long, lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, ByVal nFileSystemNameSize As Long) As Long

(ByVal lpRootPathName As String, ByVal lpVolumeNameBuffer As String, ByVal nVolumeNameSize As Long, lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long, lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, ByVal nFileSystemNameSize As Long) 这是参数列表

GetVolumeInformation(drive_chr, strlabel, Len(strlabel), serial_no, 0, 0, strtype, Len(strtype))这里面的每一个参数对应上面API函数的一个参数,并用类型要一致

比如: drive_chr------>lpRootPathName Len(strtype)----->nFileSystemNameSize

drive_chr肯定是一个变量为String型,这些都是函数方面的最基本的知识


雁无留踪之意,水无取影之心
2007-03-04 11:02
HaCk的旋律
Rank: 1
等 级:新手上路
威 望:1
帖 子:73
专家分:0
注 册:2006-12-1
得分:0 
书写格式怎么定义啊?就像MSGBOX函数...他也是有书写格式:MsgBox(prompt[, buttons] [, title] [, helpfile, context])

API函数呢?

做我所想! 欢迎大家加我好友@ Mailto: buxchang@
2007-03-04 13:14
PcrazyC
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:5652
专家分:0
注 册:2006-10-20
得分:0 
一样的,只不过MSGBOX函数参数可选,而API函数参数不可选而矣,一定要全部俱备

雁无留踪之意,水无取影之心
2007-03-04 13:25
HaCk的旋律
Rank: 1
等 级:新手上路
威 望:1
帖 子:73
专家分:0
注 册:2006-12-1
得分:0 
我就是不会写他们的格式啊....他们怎么组合的?

谢谢你拉...教我这么多..

做我所想! 欢迎大家加我好友@ Mailto: buxchang@
2007-03-04 13:38
PcrazyC
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:5652
专家分:0
注 册:2006-10-20
得分:0 

这就是正规的格式

GetVolumeInformation (ByVal lpRootPathName As String, ByVal lpVolumeNameBuffer As String, ByVal nVolumeNameSize As Long, lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long, lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, ByVal nFileSystemNameSize As Long)

MsgBox(prompt[, buttons] [, title] [, helpfile, context])这个改写成正规格式就是下面的

msgbox(byval prompt as string [,byval buttons as long] ......) []内是参数可选,()内的参数必选


雁无留踪之意,水无取影之心
2007-03-04 14:04



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-122454-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.651349 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved