|
ทุกๆวันเวลาแอดมินนั่งทำงาน ก็มักจะเปิดเพลงจาก Youtube ฟังไปด้วย แต่ก็นั่นแหละไม่ว่าจะใช้เบราเซอร์ตัวไหน มันก็มักจะกินทรัพยากรระบบเยอะซ่ะเหลือเกิน วันนี้แอดมินเลยขอนำเสนอโปรเจคในการเปิดเพลงฟังจาก Youtube โดยผ่านทาง VLC Media Player สำหรับเวอร์ชั่นนี้แอดมินจะใช้ COM (Component Object Model) ในรุ่น 32 บิต หรือที่เราเรียกมันว่า ActiveX คลิ๊กดาวน์โหลดเพื่อทำการติดตั้งได้ที่นี่ แต่แค่นี้มันเป็นเรื่องง่ายๆจิ๊บๆเกินไป แอดมินเลยเติมไอเดียเข้าไปด้วยการจัดเก็บข้อมูลรายละเอียด และลิ้งค์เอาไว้ใน Text File อันดับแรกก็คือการโหลดข้อมูลจากเท็กซ์ไฟล์เข้ามาใส่ในตารางกริดซ่ะก่อน จากนั้นก็เลือกรายการแถวรายการที่จะเล่น และก็กดปุ่มเล่นรายการ ยังๆๆๆ ยังไม่หยุดพออยู่แค่นี้ แอดมินใส่วิธีการเพิ่มและลบข้อมูลรายการเอาไว้ในตารางกริดได้ด้วย และก็ทำการบันทึกข้อมูลเอาไว้เพื่อนำมาใช้งานได้ต่อไปในครั้งหน้า ...
WARNING ... ต้องติดตั้ง VLC Media Player ก่อนด้วยน่ะครับทุกๆท่าน เพราะแอดมินไม่ได้บีบอัดเข้าไปในไฟล์โค้ดต้นฉบับด้วย ... สามารถดาวน์โหลดได้ที่นี่ ...
การนำ VLC Media Player มาใช้งานใน VB.NET ... (คลิ๊กเมาส์ขวาบริเวณ All Windows Form)
เลือก VLC ActiveX ด้วย COM ...
VideoLAN VLC ActiveX Plugin ...
ข้อมูลที่ถูกจัดเก็บเอาไว้ใน Text File ... ข้อมูลจะมี 2 ชุด โดยจะถูกแยกออกจากกันด้วยเครื่องหมายคอมม่า , (Comma)
- สถานีเพลงเพื่อชีวิต,https://www.youtube.com/watch?v=93M1PLcFCek
- เพลงเพราะออนไลน์ 24 ชั่วโมง,https://www.youtube.com/watch?v=3WPu-Ghpyf0
- สถานีเพลงเพื่อชีวิต ลูกทุ่ง,https://www.youtube.com/watch?v=iLI3EXaQHeM
- ฟังเพลงเพราะๆ 24 ชั่วโมง,https://www.youtube.com/watch?v=Onz5A9HmRbI
- Summer Live Music,https://www.youtube.com/watch?v=v3SPXsZKMT8
- เพลงเพราะๆ ฟังสบายๆ,https://www.youtube.com/watch?v=VidaM1BtWyY
- รวมเพลงสตริง ฟังยาวๆ ตอนทำงาน 2019,https://www.youtube.com/watch?v=YGktJ9LHSPo
คัดลอกไปที่คลิปบอร์ด
มาดูโค้ดฉบับเต็มกันเถอะ ...
- Imports System.IO
- Public Class frmCYoutube
- ' / ---------------------------------------------------------------
- Private Sub btnBrowse_Click(sender As System.Object, e As System.EventArgs) Handles btnBrowse.Click
- Dim dlgOpenFile As New OpenFileDialog
- With dlgOpenFile
- .Filter = "Text File |*.txt"
- .Title = "เปิดไฟล์ Text File"
- .DefaultExt = "txt"
- .InitialDirectory = MyPath(Application.StartupPath)
- .RestoreDirectory = True
- End With
- If dlgOpenFile.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
- Call SetupDataGrid()
- '//
- Call ParserText(dlgOpenFile.FileName)
- End If
- End Sub
- ' / ---------------------------------------------------------------
- Private Sub SetupDataGrid()
- '//
- dgvData.Rows.Clear()
- dgvData.Columns.Clear()
- '// Declare columns type.
- Dim Column0 As New DataGridViewTextBoxColumn()
- Dim Column1 As New DataGridViewTextBoxColumn()
- Dim Column2 As New DataGridViewButtonColumn()
- Dim Column3 As New DataGridViewButtonColumn()
- '// Add new Columns
- dgvData.Columns.AddRange(New DataGridViewColumn() { _
- Column0, Column1, Column2, Column3 _
- })
- '// Startup
- With Column0
- .Name = "Description"
- .HeaderText = "Description"
- End With
- With Column1
- .Name = "Link"
- .HeaderText = "Link"
- .ReadOnly = False
- End With
- '//
- With Column2
- .HeaderText = "" '"Add"
- .Text = "Add"
- .Name = "btnAddRow"
- .UseColumnTextForButtonValue = True
- .Width = 100
- .HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
- .DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
- .ReadOnly = True
- End With
- '//
- With Column3
- .HeaderText = "" '"Delete"
- .Text = "Delete"
- .Name = "btnDelRow"
- .UseColumnTextForButtonValue = True
- .Width = 100
- .HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
- .DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
- .ReadOnly = True
- End With
- '//
- With dgvData
- .RowHeadersVisible = False
- .AllowUserToAddRows = False
- .AllowUserToDeleteRows = False
- .AllowUserToResizeRows = False
- .MultiSelect = False
- .SelectionMode = DataGridViewSelectionMode.CellSelect
- .ReadOnly = False
- .Font = New Font("Tahoma", 9)
- ' จัดความกว้างของแต่ละหลัก
- .AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill
- .RowTemplate.MinimumHeight = 24
- .RowTemplate.Height = 24
- '// Column Header
- .ColumnHeadersHeight = 28
- .ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing
- '// Adjust Header Styles
- With .ColumnHeadersDefaultCellStyle
- .BackColor = Color.Navy
- .ForeColor = Color.White
- .Font = New Font("Tahoma", 9, FontStyle.Bold)
- End With
- End With
- End Sub
- ' / ---------------------------------------------------------------
- ' / Parser Text with delimited.
- Private Sub ParserText(strFile As String)
- '// ประกาศ reader ให้เป็นการอ่านข้อมูลเพื่อทำการแยก (TextFieldParser)
- Dim reader As Microsoft.VisualBasic.FileIO.TextFieldParser = My.Computer.FileSystem.OpenTextFieldParser(strFile)
- '// กำหนด reader ด้วย TextFieldType เพื่อทำการแยกชุดข้อมูลออกจากกัน
- reader.TextFieldType = Microsoft.VisualBasic.FileIO.FieldType.Delimited
- '// ตั้งค่าให้ reader แยกชุดข้อมูลด้วเครื่องหมายคอมม่า (,) Tap และไปป์ (|)
- reader.Delimiters = New String() {","} ', vbTab, "|"}
- '// กรณีที่บรรทัดนั้นมีเครื่องหมาย // ก็ไม่ต้องไปสนใจมัน หรือข้ามมันไปเลย
- reader.CommentTokens = New String() {"//"}
- Dim sRow As Integer = 0
- '// วนรอบการอ่านข้อมูลทีละบรรทัด
- Do While Not reader.EndOfData
- Try
- '// แยกชุดข้อมูลออกจากกันทีละบรรทัดด้วยการใช้ ReadFields method
- Dim arrFields As String() = reader.ReadFields()
- '//
- Dim dgvRow As New DataGridViewRow
- Dim dgvCell As DataGridViewCell
- Dim iCol As Byte = 0
- '// แยกข้อมูลออกมาทีละหลัก
- For Each strField As String In arrFields
- '// รับค่าเข้ามาทีละเซลล์
- dgvCell = New DataGridViewTextBoxCell
- dgvCell.Value = strField
- dgvRow.Cells.Add(dgvCell)
- iCol += 1
- Next
- '// เพิ่มเข้าไปในแถวของตารางกริด
- dgvData.Rows.Add(dgvRow)
- sRow += 1
- '// Trap Error
- Catch ex As Microsoft.VisualBasic.FileIO.MalformedLineException
- MessageBox.Show(ex.Message)
- End Try
- Loop
- '// Close the reader
- reader.Close()
- End Sub
- ' / ---------------------------------------------------------------
- Private Sub frmCYoutube_FormClosed(sender As Object, e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
- Me.Dispose()
- Application.Exit()
- End Sub
- ' / ---------------------------------------------------------------
- Private Sub frmCYoutube_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
- Call SetupDataGrid()
- ToolStripStatusLabel5.Text = ""
- End Sub
- ' / ---------------------------------------------------------------
- ' / บันทึกข้อมูลลง Text File
- Private Sub btnSave_Click(sender As System.Object, e As System.EventArgs) Handles btnSave.Click
- If dgvData.RowCount = 0 Then Return
- '// เช็คก่อนว่ามีรายการใดในตารางกริดที่ไม่ได้ป้อนข้อมูล
- For xRow = 0 To dgvData.RowCount - 1
- If dgvData.Rows(xRow).Cells(0).Value = "" Or IsNothing(dgvData.Rows(xRow).Cells(0).Value) AndAlso (dgvData.Rows(xRow).Cells(1).Value = "" Or IsNothing(dgvData.Rows(xRow).Cells(1).Value)) Then
- MessageBox.Show("รายการแถวที่ " & xRow + 1 & " ยังไม่ได้ใส่รายการ กรุณาตรวจสอบให้เรียบร้อย.", "ตรวจสอบข้อมูล", MessageBoxButtons.OK, MessageBoxIcon.Warning)
- Exit Sub
- End If
- Next
- '//
- Dim dlgSaveFile As New SaveFileDialog()
- With dlgSaveFile
- .Filter = "Text File |*.txt"
- .Title = "บันทึกไฟล์ Text File"
- .DefaultExt = "txt"
- .InitialDirectory = MyPath(Application.StartupPath)
- .RestoreDirectory = True
- End With
- If dlgSaveFile.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
- Call ExportToTextFile(dlgSaveFile.FileName)
- End If
- End Sub
- ' / ---------------------------------------------------------------
- Private Sub ExportToTextFile(strFile As String)
- Dim writer As TextWriter = New StreamWriter(strFile)
- Try
- Dim sRow As Integer = dgvData.Rows.Count - 1
- '// วนรอบตามจำนวนแถว
- For i As Integer = 0 To sRow
- '// เริ่มนับหลักจาก 0 และตัดหลักปุ่มเพิ่มและลบออกไป จึงต้องลบออกด้วย 3
- For j As Integer = 0 To dgvData.Columns.Count - 3
- If j = dgvData.Columns.Count - 3 Then
- writer.Write(Replace(dgvData.Rows(i).Cells(j).Value.ToString(), ",", ""))
- Else
- writer.Write(Replace(dgvData.Rows(i).Cells(j).Value.ToString, ",", "") & ",")
- End If
- Next
- writer.WriteLine("")
- Next
- Catch ex As Exception
- MessageBox.Show(ex.Message, "รายงานความผิดพลาด", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
- End Try
- writer.Close()
- End Sub
- ' / ---------------------------------------------------------------
- Private Sub dgvData_CellClick(sender As Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvData.CellClick
- Select Case e.ColumnIndex
- '// หลักที่ 3 (Index = 2) คือหลักที่เป็นปุ่มเพิ่ม
- Case 2
- dgvData.Rows.Add()
- '// หลักที่ 4 คือหลักที่เป็นปุ่มลบ
- Case 3
- '// ลบรายการแถวที่เลือกออกไป
- dgvData.Rows.Remove(dgvData.CurrentRow)
- End Select
- End Sub
- ' / ---------------------------------------------------------------
- Private Sub btnPlay_Click(sender As System.Object, e As System.EventArgs) Handles btnPlay.Click
- If dgvData.RowCount = 0 Then Return
- ToolStripStatusLabel5.Text = dgvData.CurrentRow.Cells(1).Value.ToString
- If AxVLCPlugin21.playlist.isPlaying Then AxVLCPlugin21.playlist.stop()
- Try
- With AxVLCPlugin21
- '.playlist.items.remove(0)
- .playlist.items.clear()
- .playlist.add(dgvData.CurrentRow.Cells(1).Value.ToString)
- .playlist.play()
- End With
- Catch ex As Exception
- MessageBox.Show(ex.Message, "Report Status", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
- End Try
- End Sub
- ' / ---------------------------------------------------------------
- ' / Get my project path
- ' / AppPath = C:\My Project\bin\debug
- ' / Replace "\bin\debug" with ""
- ' / Return : C:\My Project\
- Function MyPath(ByVal AppPath As String) As String
- '/ MessageBox.Show(AppPath);
- AppPath = AppPath.ToLower()
- '/ Return Value
- MyPath = AppPath.Replace("\bin\debug", "").Replace("\bin\release", "").Replace("\bin\x86\debug", "").Replace("\bin\x86\release", "")
- '// If not found folder then put the \ (BackSlash) at the end.
- If Microsoft.VisualBasic.Right(MyPath, 1) <> Chr(92) Then MyPath = MyPath & Chr(92)
- End Function
- Private Sub ToolStripStatusLabel3_Click(sender As System.Object, e As System.EventArgs) Handles ToolStripStatusLabel3.Click
- Process.Start("http://www.g2gnet.com/webboard")
- End Sub
- Private Sub ToolStripStatusLabel2_Click(sender As System.Object, e As System.EventArgs) Handles ToolStripStatusLabel2.Click
- Process.Start("https://www.facebook.com/g2gnet")
- End Sub
- Private Sub btnExit_Click(sender As System.Object, e As System.EventArgs) Handles btnExit.Click
- Me.Close()
- End Sub
- End Class
คัดลอกไปที่คลิปบอร์ด
ดาวน์โหลดโค้ดต้นฉบับ VB.NET (2010) ได้ที่นี่ ...
|
ขออภัย! โพสต์นี้มีไฟล์แนบหรือรูปภาพที่ไม่ได้รับอนุญาตให้คุณเข้าถึง
คุณจำเป็นต้อง ลงชื่อเข้าใช้ เพื่อดาวน์โหลดหรือดูไฟล์แนบนี้ คุณยังไม่มีบัญชีใช่ไหม? ลงทะเบียน
x
|