Board logo

标题: [问题求助] 为什么wmp可以直接以ocx的方式创建?! [打印本页]

作者: gfwlxx    时间: 2018-6-3 02:36     标题: 为什么wmp可以直接以ocx的方式创建?!

@echo off
if not exist vbPlay.vbs (
>vbPlay.vbs  echo Set Args=WScript.Arguments
>>vbPlay.vbs echo For i=0 to Args.Count-1
>>vbPlay.vbs echo Dim Wmp:Set Wmp=CreateObject^("WMPlayer.OCX"^):Wmp.Settings.Volume="100":Wmp.Url=Args^(i^)
>>vbPlay.vbs echo While Wmp.PlayState=9 or Wmp.PlayState=6 or Wmp.PlayState=3:WScript.Sleep 1000:Wend:Set Wmp=Nothing
>>vbPlay.vbs echo Next
)

vbs核心函数:
Set Wmp=CreateObject^("WMPlayer.OCX"^)
?!

用高级的核心函数不是这样的
// Type Lib: C:\Windows\system32\wmp.dll (1)
// LIBID: {6BF52A50-394A-11D3-B153-00C04F79FAA6}
// LCID: 0
// Helpfile:
// HelpString: Windows Media Player
// DepndLst:

建立的是这个接口
  IWMPPlayer4 = interface(IWMPCore3)
    ['{6C497D62-8919-413C-82DB-E935FB3EC584}']

why!@#!@#!@¥!@#!@#
作者: 老刘1号    时间: 2018-6-4 11:20

迷之问题,因为wmp提供了COM自动化接口啊
作者: CrLf    时间: 2018-6-4 11:31

人家注册的COM组件名叫这个
可以看看 demon 大神的文章:http://demon.tw/copy-paste/vbs-createobject-internal.html
作者: gfwlxx    时间: 2018-6-4 22:31

回复 2# 老刘1号


字符串 "WMPlayer.OCX"
ocx的文件名既可以作为progid?
或者对象的名既为"WMPlayer.OCX"的话这个名称是怎么来的? (一楼我用高级语言生成的tlb文件里没有字符串"WMPlayer.OCX")
作者: gfwlxx    时间: 2018-6-4 22:32

回复 3# CrLf

1.我没看出他哪里像大神了
他说的只不过是createobject所调用的函数罢了 (懂点api的都知道是怎么实现的)

2.关键是progid
字符串 "WMPlayer.OCX"
ocx的文件名既可以作为progid?
或者对象的名既为"WMPlayer.OCX"的话这个名称是怎么来的? (一楼我用高级语言生成的tlb文件里没有字符串"WMPlayer.OCX")




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2