使用Microsoft.DirectX.AudioVideoPlayback組件。
成都創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供峰峰礦網(wǎng)站建設(shè)、峰峰礦做網(wǎng)站、峰峰礦網(wǎng)站設(shè)計(jì)、峰峰礦網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、峰峰礦企業(yè)網(wǎng)站模板建站服務(wù),10余年峰峰礦做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
首先,需要安裝DirectX SDK.
DirectX 9.0c Redistributable
DirectX 9.0 SDK Update
然后將對(duì)Microsoft.DirectX.AudioVideoPlayback.dll的引用添加到你的項(xiàng)目。
使用這段代碼在Panel控件上放置一個(gè)視頻文件:
ImportsMicrosoft.DirectX.AudioVideoPlayback
Public Class Form1
Private Sub Form1_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs) Handles MyBase.Load
Dim videoFile As Audio =New Audio("D:\Video1.avi")
videoFile.Owner = Panel1
videoFile.Play()
EndSub
EndClass
'以前收集的資料,沒用過(guò),你自己整整
2)使用Windows Media Player控件也能播放視頻。
右擊工具箱-選項(xiàng)- COM組件-定位并添加“Windows Media Player” ActiveX控件
然后“Windows Media Player”控件將會(huì)出現(xiàn)在工具箱上。將它拖動(dòng)到窗體上來(lái)生產(chǎn)一個(gè)AxWindowsMediaPlayer1對(duì)象,并為URL屬性指定音頻或者視頻文件。
AxWindowsMediaPlayer1.URL = "D:\VideoOrAudio.wmv"
Media Player控件默認(rèn)將會(huì)自動(dòng)播放文件。
VB.NET 里面會(huì)有一個(gè)main方法表示函數(shù)的入口
main方法的參數(shù)就是命令行傳給它的
shutdown.exe能直接調(diào)用是因?yàn)槟愕沫h(huán)境變量有C盤的windows目錄
你只要在你程序的輸出目錄(一般為bin)里面打開命令行輸入程序名稱.exe就可以直接執(zhí)行你的窗體
如果你要調(diào)試輸入命令的效果,你打開你項(xiàng)目的屬性,找到調(diào)試?yán)锩娴拿钚袇?shù),在里面輸入測(cè)試參數(shù)就能在你main函數(shù)里面看到結(jié)果了
那如果你想打開任何命令行都可以執(zhí)行你的窗體程序,那你把你程序的安裝目錄設(shè)置為環(huán)境變量,這樣就可以直接執(zhí)行這個(gè)命令了
一般VB.NET調(diào)用DLL可以通過(guò)Declare 語(yǔ)句在模塊級(jí)用于聲明對(duì)動(dòng)態(tài)鏈接庫(kù) (DLL) 中的外部過(guò)程的引用。
Private Declare Sub
myFunc1 Lib "mylib.dll"
(ByVal strName As String)
但是,VB.NET,C#.NET創(chuàng)建的DLL是個(gè)類庫(kù),不能生成標(biāo)準(zhǔn)的 DLL 文件,不能采用declare ()的方式。應(yīng)該在解決方案資源管理器下的需要引用的項(xiàng)目的引用欄點(diǎn)擊鼠標(biāo)右鍵--添加對(duì)這個(gè)類庫(kù)[mylib.dll]的引用即可。
以下為VB.NET調(diào)用DLL代碼示例:
DllImport("kcomm.dll", CharSetCharSet:
=CharSet.Ansi, SetlastError:=True)
Private Shared Function gettxt(ByVal
port As Integer, ByVal wait As
Integer, ByVal _date As Long,
ByVal _time As Long, ByVal
filename As String) As Integer
End Function
根據(jù)實(shí)際情況更改你的DLL名稱、函數(shù)名、參數(shù)名和類型。
VB.NET調(diào)用DLL的只是COM組件,無(wú)法作為輸出函數(shù)的DLL,其實(shí)這只是個(gè)錯(cuò)誤的說(shuō)法。其實(shí)MS非常狡猾,如果你是個(gè)VB瘋狂發(fā)燒友的話,應(yīng)該早就狂試出這種可以創(chuàng)建輸出函數(shù)的DLL的方法。
VB編譯文件實(shí)際上采取了兩次編譯的方法,首先是調(diào)用C2.exe產(chǎn)生*.OBJ文件,然后調(diào)用Link.EXE連接。如果在LINK的時(shí)候添加EXPORT選項(xiàng),實(shí)際上是可以輸出函數(shù)的。但是,在VB的工程選項(xiàng)中將這些屏蔽了。而且過(guò)分的是:VB在Build完成后會(huì)將OBJ文件刪除,這樣就無(wú)法手動(dòng)通過(guò)Link來(lái)創(chuàng)建我們需要的DLL了。不過(guò)我找到一個(gè)比較齷鹺的變通的方法,就是先創(chuàng)建一個(gè)Exe工程,在Form_Load事件里面寫下面的語(yǔ)句:
Sub Main
If MsgBox("哈哈",
vbOKCancel) = vbOK Then
Shell "link2.exe "
Command$
End If
End Sub
然后編譯為L(zhǎng)inkTemp.EXE,接下來(lái)將LINK.EXE改名為L(zhǎng)ink2.exe,將LinkTemp.EXE改名為L(zhǎng)ink.EXE。這樣在VB調(diào)用Link.EXE時(shí)會(huì)彈出對(duì)話框,處理就會(huì)中斷。這時(shí)就可以有機(jī)會(huì)將OBJ文件拷貝出來(lái)了。
然后我創(chuàng)建了一個(gè)ActiveX DLL工程,在這個(gè)工程里面添加一個(gè)Module并創(chuàng)建一個(gè)Public函數(shù)mathadd:
Public Function mathadd
(ByVal a As Long, ByVal
b As Long) As Long
mathadd = a + b
End Function
編譯這個(gè)工程,在Link的時(shí)候就會(huì)中斷。然后把創(chuàng)建的Class1.obj、Module1.obj、Project1.obj備份出來(lái)。然后就可以調(diào)用Link2.exe連接OBJ到DLL了,我的連接代碼是:
Link2.exe "e:\\vbdll\\Class1.obj"
"e:\\vbdll\\Module1.obj"
"e:\\vbdll\\Project1.obj"
"E:\\Program Files\\Microsoft
Visual Studio\\VB98\\VBAEXE6.LIB"
/ENTRY:__vbaS /EXPORT:mathadd /OUT:
"e:\\vbdll\\ProjectOK.dll"
/BASE:0x11000000 /SUBSYSTEM:
WINDOWS,4.0 /VERS
注意里面的/ENTRY和/EXPORT開關(guān),/EXPORT開關(guān)聲明了輸出函數(shù)mathadd。這樣就大功告成了,可以被其他語(yǔ)言引入,例如在VB中,只需要:
Private Declare Function mathadd
Lib "e:\\vbdll\\ProjectOK.dll"
(ByVal a As Long, ByVal b As
Long) As Long
Private Declare function x Lib "dlltest.dll" (ByVal a As long, byval b as long) as long
DLL在生成后,里內(nèi)的函數(shù)會(huì)有變化,所以你要先用軟件exesc查一下它變化的結(jié)果是什么
之后這樣寫,我是用C#寫的,對(duì)你應(yīng)該有幫助
[DllImport("facecom.dll", EntryPoint = "?fnfacecom@@YAHXZ")]
public extern static int fnfacecom();
?fnfacecom@@YAHXZ
這個(gè)就是那個(gè)就是在軟件里查到的改變后的結(jié)果,你寫在入口號(hào)處就可以了
這個(gè)我用過(guò)了沒問題