ซอฟต์แวร์เครื่องเล่น VCD เช่น "Super Jieba" โดยทั่วไปจะมีปุ่มหรือตัวเลือกเมนูที่เรียกว่า "เล่น VCD" คลิกเพื่อเล่นภาพยนตร์ VCD โดยอัตโนมัติ หากเส้นทางของไฟล์ได้รับการแก้ไข สามารถทำได้โดยใช้ตัวควบคุมมัลติมีเดียเท่านั้น (mmcontrol) อย่างไรก็ตาม สำหรับคอมพิวเตอร์เครื่องอื่น เนื่องจากจำนวนพาร์ติชันบนฮาร์ดดิสก์แตกต่างกัน เส้นทางของออปติคัลดิสก์ไดรฟ์จึงมีแนวโน้มที่จะเป็น แตกต่าง. มันประสบความสำเร็จได้อย่างไร? โปรดดูการวิเคราะห์โดยละเอียดของฉันด้านล่าง:
ใช้ "regedit.exe" เพื่อดูรายการแอตทริบิวต์ของไดรฟ์ซีดีรอม (hkey_local_machine, enum, scsi) ในรีจิสทรี Windows 98 และเปรียบเทียบรายการแอตทริบิวต์ของฮาร์ดดิสก์ไดรฟ์ (hkey_local_machine, enum, esdi) กับฟล็อปปี้ดิสก์ ดิสก์ไดรฟ์
รายการแอตทริบิวต์ (hkey_local_machine, enum, flop) คุณสามารถค้นหาได้: เนื้อความของดิสก์ที่แตกต่างกันจะแตกต่างกันตามพารามิเตอร์ "ประเภทอุปกรณ์" ประเภทอุปกรณ์ของฮาร์ดดิสก์คือ "0" ฟล็อปปี้ดิสก์คือ "0a" และออปติคัลดิสก์ไดรฟ์ คือ "5" " จากนั้นใช้ "devicetype" เป็นคีย์เวิร์ดเพื่อค้นหาคู่มือการเขียนโปรแกรมเกี่ยวกับ win32API และคุณจะได้รับฟังก์ชัน "getdevicetype" ที่ระบุดิสก์ต่างๆ
ด้วยฟังก์ชันนี้ คุณสามารถรับอักษรชื่อไดรฟ์ของไดรฟ์ซีดีรอมได้โดยใช้ประโยคต่อไปนี้:
IfGetDriveType("d:/")<>5จากนั้น
IfGetDriveType("e:/")<>5แล้ว
IfGetDriveType("f:/")<>5จากนั้น
IfGetDriveType("g:/")<>5จากนั้น
drivecd = "H"
GoTogetcdfiles
สิ้นสุดถ้า
drivecd = "G"
GoTogetcdfiles
สิ้นสุดถ้า
drivecd = "F"
GoTogetcdfiles
สิ้นสุดถ้า
drivecd = "E"
GoTogetcdfiles
อื่น
ไดรฟ์ซีดี = "D"
สิ้นสุดถ้า
รับไฟล์:
โปรแกรมใช้วิธีที่ละเอียดถี่ถ้วนเพื่อตรวจสอบว่าประเภทอุปกรณ์ของดิสก์ D, E, F และ G เป็น "5" หรือไม่ หากไม่ใช่ แสดงว่าออปติคัลดิสก์ไดรฟ์เป็น H (มีเครื่องไม่กี่เครื่องที่มีอักษรระบุไดรฟ์เกิน H ดังนั้นรายการที่ครบถ้วนสมบูรณ์จึงสิ้นสุดที่นี่) และเราได้รับ "drivecd" คืออักษรชื่อไดรฟ์ของไดรฟ์ซีดีรอม
เนื่องจากเส้นทางของภาพยนตร์ VCD ทั้งหมดคือ /mpegav/ คุณจึงสามารถใช้ฟังก์ชัน VB "Dir()" เพื่อรับเส้นทางการเล่นที่สมบูรณ์ได้:
MMControl1.FileName=drivecd&":/Mpegav/"&Dir(drivecd&":/Mpegav/*.dat")
โปรแกรมต้นฉบับต่อไปนี้ใช้การเล่น VCD อัตโนมัติโดยเฉพาะ มีตัวควบคุมมัลติมีเดียเพียงตัวเดียวในรูปแบบโปรแกรม - MMcontrol1 เมื่อรันโปรแกรมแล้ว โปรแกรมจะเล่นจากไฟล์แรกโดยอัตโนมัติ
'ประกาศฟังก์ชัน GetDriveType
PRivateDeclareFunctionGetDriveTypeLib "kernel32" นามแฝง "GetDriveTypeA" (ByValnDriveAsString) AsLong
Dimfiles()AsString
DimdrivecdAsString
DimiAsInteger
DimjAsInteger
ส่วนตัวSubForm_Load()
'กำหนดอักษรชื่อไดรฟ์ของไดรฟ์ซีดีรอม
IfGetDriveType("d:/")<>5จากนั้น
IfGetDriveType("e:/")<>5แล้ว
IfGetDriveType("f:/")<>5จากนั้น
IfGetDriveType("g:/")<>5จากนั้น
drivecd = "H"
GoTogetcdfiles
สิ้นสุดถ้า
drivecd = "G"
GoTogetcdfiles
สิ้นสุดถ้า
drivecd = "F"
GoTogetcdfiles
สิ้นสุดถ้า
drivecd = "E"
GoTogetcdfiles
อื่น
ไดรฟ์ซีดี = "D"
สิ้นสุดถ้า
'ใส่ไฟล์ VCD ทั้งหมดลงในไฟล์ array()
รับไฟล์:
OnErrorGoTocderr:
s=Dir(drivecd&":/Mpegav/*.dat")
ผม=1
ในขณะที่<>""
ReDimPreservefiles(i)AsString
ไฟล์(i)=s
ฉัน=ฉัน 1
s=ผบ.()
เวนด์
เจ=1
โทรvcdplay
OnErrorGoTo0
ทางออกย่อย
ซีดี:
MsgBox "ซีดีไม่พร้อม!"
ยกเลิกการโหลดฉัน
สิ้นสุดย่อย
'ตัดสินใจว่าจะเล่นไฟล์ถัดไปหรือไม่
PrivateSubMMControl1_สถานะอัพเดต()
IfMMControl1.Position=MMControl1.Lengthแล้ว
เจ=เจ 1
ถ้าj>i-1แล้วj=1
โทรvcdplay
สิ้นสุดถ้า
สิ้นสุดย่อย
'เล่นไฟล์วีซีดี
ส่วนตัวSubvcdplay()
MMControl1.Command = "หยุด"
MMControl1.Command = "ปิด"
MMControl1.FileName=drivecd&":/Mpegav/"&files(j)
MMControl1.Command = "เปิด"
MMControl1.Command = "เล่น"
สิ้นสุดย่อย
โปรแกรมข้างต้นส่งผ่านบน Windows98 และ VisualBasic6.0 ของจีน -