VB API函数

我朋友给了我一个视频实例。是关于视频的,PrivateDeclareFunctionmciSendStringLib"winmm.dll"Alias"mciSendStr... 我朋友给了我一个视频实例。是关于视频的,Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal aaa As String, ByVal bbb As String, ByVal ccc As Long, ByVal ddd As Long) As Long
我主要不知道的就是为什么要那个winmm.dll文件,然后就是后面的,我认为没有用,但又搞不懂是什么作用,请高手详细讲解一下
这段话,我不知道他是什么意思,请详细讲解一下,越详细越好

mciSendString "open D:\录像\2\0016.mpg alias wmv00 parent " & Picture1.hWnd & " style child", 0&, 0, 0
这个也帮忙解读一下
Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long

我把这句代码修改成这样,为什么还是能照常运行啊....请各位高手讲解一下啊.....

Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal aaa As String, ByVal bbb As String, ByVal ccc As Long, ByVal ddd As Long) As Long

---------------------------------------------------------------------------------------------
mciSendString "open D:\录像\2\0016.mpg alias wmv00 parent " & Picture1.hWnd & " style child", 0&, 0, 0

这个 的alias parent style child什么意思
展开
 我来答
swx1995
2010-07-01 · TA获得超过2696个赞
知道大有可为答主
回答量:1477
采纳率:0%
帮助的人:2370万
展开全部
==以下全部原创 想要系统地了解 请耐心往下看==

首先,Windows API指的就是 系统已经做好了一个功能,一些类似的功能一起放在了一个DLL中。

Lib "winmm.dll",这个是指定mciSendStringA这个函数在哪里的。
就像学校里的同学都是按 班级->姓名标的。如果只按姓名标识的话可能会重叠,更重要是 寻找 需要大量时间。windows也是一样。你调用一个函数它要知道这个函数在哪儿。

当然如果你标错了,那会找不到的。(“找不到入口点”)

Alias "mciSendStringA" 指的是这个API 实际名字为mciSendStringA。你有没有注意function后面写的是mciSendString呢?
这个实际上是为了方便你使用 自己定义的别名(类似于学生的学号)。

所以要偷懒,可以写function A lib "winmm.dll" alias "mciSendStringA",然后你用A()一样还是可以调用的~当然这不是一个好习惯 因为过了一会儿你可能不知道A()是干嘛用的,这就麻烦了~~

别名需要指定原名,就像你给一个同学分配一个学号,你必须告诉他这是他的学号,否则你找这个学号是找不到人的因为他不知道自己是这个学号,但是找名字(原名)还是找得到的,因为名字标识了他这个人。
这就是为什么你用了别名 还必须有Alias "" 的缘故。当然如果原名和别名一致,你就能省略原名了。(vb认为,如果你省略了原名,那么原名即别名,故你有了不一样的别名不说原名,VB就会找不到这个函数了)

(ByVal aaa As String, ByVal bbb As String, ByVal ccc As Long, ByVal ddd As Long) As Long
接下来这个是参数了。aaa,bbb,ccc,ddd这个参数名实际上是无所谓的,你随便写都行,但是其他内容不能乱修改。
这里需要一些内核知识。你有兴趣可以继续看:

cpu实际上1次只能执行1条指令。windows有一个调度程序,负责在时间片段内让cpu分别处理每个程序的工作。
每个程序的每个线程只能按顺序执行下去。cpu就像一个机器,读好一个指令,读下一个指令…………读啊读。

函数的调用,实际上只是跳转。cpu本来顺着读指令。碰到了函数(call),它就跳到那个地方去了,去读那个地方的指令。参数是怎么传的呢?科学家们很聪明,定义了这么个标准:

**
函数调用前 所有参数按从右向左顺序压入一块内存(栈)

函数内,要用参数,直接从左向右访问这个内存即可
**

那么你需要传参数,在call之前需要把参数压入一个存储的地方(栈)。你到了那个函数里面再取出来。

现在很明了了,不同的类型它的占用的大小是不同的。如果你不指定类型或者指定错了,那么栈就会混乱(因为栈是一个字节一个字节储存的)。读取的时候显然就会出错。故,后面那一串不能省略也不允许省略(因为省略以后其实vb也不知道应该如何保存参数了)

mciSendString "open D:\录像\2\0016.mpg alias wmv00 parent " & Picture1.hWnd & " style child", 0&, 0, 0
这句解释1,2,3#都有了。。不重复累述了。

为什么参数名字无所谓:
因为你保存参数时候是从右向左(这个是vb帮你做的),而函数里面读取参数都是从左向右的。名字只是一个别名,重要的长度已经保证正确了,因此名字是不重要的,名字只是为了方便《你》编程而已。你看着英文总比看着aaa bbb ccc要容易理解吧?

栈就像一个桶。
你保存参数,就像把东西扔到桶里面(一次只能扔一个 并且桶在同一位置只能有一个东西)。

函数读取参数,就像从上面拿东西一样。

不过这个东西没有明确的分界线。你需要按照既定的规则去分割他。这就是参数类型的作用。

名字实际上并没有扔进桶里面。它只是你拿东西的时候的一个说明牌而已。

alias wmv00 parent
这里是mciSendString函数的特殊用法 建议用Google搜索“MSDN mciSendString”查看函数的详细用法。

以下为Cpp的参考帮助
但是,由于字符串内容是通用的,所以它也适用于vb.
请耐心地看英文。

http://msdn.microsoft.com/zh-cn/library/dd743572(v=VS.85).aspx

中文版也有

这里贴url,答案可能会被吃掉,故请用Google搜索关键字“MCI Command String总览”

第一条即是。
百度网友c31cf7c
2010-07-01 · 超过10用户采纳过TA的回答
知道答主
回答量:20
采纳率:0%
帮助的人:19.6万
展开全部
LS说的很详细了。
简单地说,Alias后面的mciSendStringA是Windows系统自己提供的一个函数,它在winmm.dll里面,这就是 Lib "winmm.dll" Alias "mciSendStringA" 的意思。
Private Declare Function 后面的mciSendString是你给mciSendStringA起的一个别名,在后面你自己的程序里调用这个函数可以直接用mciSendString。
至于后面的参数名,命名成什么都无所谓,但是参数类型不能改。它们只是说明,这个函数需要4个参数,前两个是String类型,后两个是Long类型。
调用这个API的时候,就把这些参数("open D:\录像\2\0016.mpg alias wmv00 parent "& Picture1.hWnd & " style child" 等等共4个参数)传递给winmm.dll里的mciSendStringA,让这个系统自带的函数完成任务。至于这些参数的意义,最好还是去查一下有关资料。Windows的API很多,不可能把每个API的参数意义都记下来的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户

2010-06-30
展开全部
mciSendString 是winmm.dll里的其中一个函数
"mciSendStringA" 是这个API函数的别名 你调用mciSendString这个API 也可以写成 mciSendStringA "open D:\录像\2\0016.mpg alias wmv00 parent " & Picture1.hWnd & " style child", 0&, 0, 0
这个别名可以是你随意写 只要不和其他的函数重名就行了

LpstrCommand是mci命令的参数
lpstrReturnString是一个字符串,它用来接收mciSendString函数返回的信息
uReturnLength参数用来指定参数lpstrReturnString的长度
hwndCallback是接收“wait”、“notify”消息的窗口句柄

更详细的资料 不妨看看下面的链接

参考资料: http://blog.csdn.net/psongchao/archive/2007/01/19/1487788.aspx

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
aspd199
2010-06-30 · TA获得超过906个赞
知道小有建树答主
回答量:865
采纳率:50%
帮助的人:488万
展开全部
mciSendString 为音频控制的命令,可以做为播放音频文件,控制光驱,音量管理等操作。

mciSendString "open D:\录像\2\0016.mpg alias wmv00 parent " & Picture1.hWnd & " style child", 0&, 0, 0
'此为打开并播放“D:\录像\2\0016.mpg”文件,以Picture1作为播放影象的容器

参考资料: VB专业解答团 http://zhidao.baidu.com/team/view/VB%D7%A8%D2%B5%BD%E2%B4%F0%CD%C5

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
313668584
2010-07-15
知道答主
回答量:9
采纳率:0%
帮助的人:0
展开全部
可以把分给我了吗,我已经告诉你了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式