ชุมชนคนรักภาษาเบสิค - Visual Basic Community

 ลืมรหัสผ่าน
 ลงทะเบียน
ค้นหา
ดู: 4435|ตอบกลับ: 0

[VB.NET] เล่น Youtube ด้วย VLC ActiveX และเก็บข้อมูลเอาไว้ในรูปแบบเท็กซ์ไฟล์

[คัดลอกลิงก์]

320

กระทู้

512

โพสต์

6583

เครดิต

ผู้ดูแลระบบ

ทองก้อน ทับทิมกรอบ

Rank: 9Rank: 9Rank: 9

เครดิต
6583



ทุกๆวันเวลาแอดมินนั่งทำงาน ก็มักจะเปิดเพลงจาก 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)
  1. สถานีเพลงเพื่อชีวิต,https://www.youtube.com/watch?v=93M1PLcFCek
  2. เพลงเพราะออนไลน์ 24 ชั่วโมง,https://www.youtube.com/watch?v=3WPu-Ghpyf0
  3. สถานีเพลงเพื่อชีวิต ลูกทุ่ง,https://www.youtube.com/watch?v=iLI3EXaQHeM
  4. ฟังเพลงเพราะๆ​ 24​ ชั่วโมง,https://www.youtube.com/watch?v=Onz5A9HmRbI
  5. Summer Live Music,https://www.youtube.com/watch?v=v3SPXsZKMT8
  6. เพลงเพราะๆ ฟังสบายๆ,https://www.youtube.com/watch?v=VidaM1BtWyY
  7. รวมเพลงสตริง ฟังยาวๆ ตอนทำงาน 2019,https://www.youtube.com/watch?v=YGktJ9LHSPo
คัดลอกไปที่คลิปบอร์ด

มาดูโค้ดฉบับเต็มกันเถอะ ...
  1. Imports System.IO

  2. Public Class frmCYoutube

  3.     ' / ---------------------------------------------------------------
  4.     Private Sub btnBrowse_Click(sender As System.Object, e As System.EventArgs) Handles btnBrowse.Click
  5.         Dim dlgOpenFile As New OpenFileDialog
  6.         With dlgOpenFile
  7.             .Filter = "Text File |*.txt"
  8.             .Title = "เปิดไฟล์ Text File"
  9.             .DefaultExt = "txt"
  10.             .InitialDirectory = MyPath(Application.StartupPath)
  11.             .RestoreDirectory = True
  12.         End With
  13.         If dlgOpenFile.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
  14.             Call SetupDataGrid()
  15.             '//
  16.             Call ParserText(dlgOpenFile.FileName)
  17.         End If
  18.     End Sub

  19.     ' / ---------------------------------------------------------------
  20.     Private Sub SetupDataGrid()
  21.         '//
  22.         dgvData.Rows.Clear()
  23.         dgvData.Columns.Clear()
  24.         '// Declare columns type.
  25.         Dim Column0 As New DataGridViewTextBoxColumn()
  26.         Dim Column1 As New DataGridViewTextBoxColumn()
  27.         Dim Column2 As New DataGridViewButtonColumn()
  28.         Dim Column3 As New DataGridViewButtonColumn()
  29.         '// Add new Columns
  30.         dgvData.Columns.AddRange(New DataGridViewColumn() { _
  31.                                  Column0, Column1, Column2, Column3 _
  32.                                 })
  33.         '// Startup
  34.         With Column0
  35.             .Name = "Description"
  36.             .HeaderText = "Description"
  37.         End With
  38.         With Column1
  39.             .Name = "Link"
  40.             .HeaderText = "Link"
  41.             .ReadOnly = False
  42.         End With
  43.         '//
  44.         With Column2
  45.             .HeaderText = "" '"Add"
  46.             .Text = "Add"
  47.             .Name = "btnAddRow"
  48.             .UseColumnTextForButtonValue = True
  49.             .Width = 100
  50.             .HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
  51.             .DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
  52.             .ReadOnly = True
  53.         End With
  54.         '//
  55.         With Column3
  56.             .HeaderText = "" '"Delete"
  57.             .Text = "Delete"
  58.             .Name = "btnDelRow"
  59.             .UseColumnTextForButtonValue = True
  60.             .Width = 100
  61.             .HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
  62.             .DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
  63.             .ReadOnly = True
  64.         End With
  65.         '//
  66.         With dgvData
  67.             .RowHeadersVisible = False
  68.             .AllowUserToAddRows = False
  69.             .AllowUserToDeleteRows = False
  70.             .AllowUserToResizeRows = False
  71.             .MultiSelect = False
  72.             .SelectionMode = DataGridViewSelectionMode.CellSelect
  73.             .ReadOnly = False
  74.             .Font = New Font("Tahoma", 9)
  75.             ' จัดความกว้างของแต่ละหลัก
  76.             .AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill
  77.             .RowTemplate.MinimumHeight = 24
  78.             .RowTemplate.Height = 24
  79.             '// Column Header
  80.             .ColumnHeadersHeight = 28
  81.             .ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing
  82.             '// Adjust Header Styles
  83.             With .ColumnHeadersDefaultCellStyle
  84.                 .BackColor = Color.Navy
  85.                 .ForeColor = Color.White
  86.                 .Font = New Font("Tahoma", 9, FontStyle.Bold)
  87.             End With
  88.         End With
  89.     End Sub

  90.     ' / ---------------------------------------------------------------
  91.     ' / Parser Text with delimited.
  92.     Private Sub ParserText(strFile As String)
  93.         '// ประกาศ reader ให้เป็นการอ่านข้อมูลเพื่อทำการแยก (TextFieldParser)
  94.         Dim reader As Microsoft.VisualBasic.FileIO.TextFieldParser = My.Computer.FileSystem.OpenTextFieldParser(strFile)

  95.         '// กำหนด reader ด้วย TextFieldType เพื่อทำการแยกชุดข้อมูลออกจากกัน
  96.         reader.TextFieldType = Microsoft.VisualBasic.FileIO.FieldType.Delimited
  97.         '// ตั้งค่าให้ reader แยกชุดข้อมูลด้วเครื่องหมายคอมม่า (,) Tap และไปป์ (|)
  98.         reader.Delimiters = New String() {","} ', vbTab, "|"}
  99.         '// กรณีที่บรรทัดนั้นมีเครื่องหมาย // ก็ไม่ต้องไปสนใจมัน หรือข้ามมันไปเลย
  100.         reader.CommentTokens = New String() {"//"}
  101.         Dim sRow As Integer = 0
  102.         '// วนรอบการอ่านข้อมูลทีละบรรทัด
  103.         Do While Not reader.EndOfData
  104.             Try
  105.                 '// แยกชุดข้อมูลออกจากกันทีละบรรทัดด้วยการใช้ ReadFields method
  106.                 Dim arrFields As String() = reader.ReadFields()
  107.                 '//
  108.                 Dim dgvRow As New DataGridViewRow
  109.                 Dim dgvCell As DataGridViewCell
  110.                 Dim iCol As Byte = 0
  111.                 '// แยกข้อมูลออกมาทีละหลัก
  112.                 For Each strField As String In arrFields
  113.                     '// รับค่าเข้ามาทีละเซลล์
  114.                     dgvCell = New DataGridViewTextBoxCell
  115.                     dgvCell.Value = strField
  116.                     dgvRow.Cells.Add(dgvCell)
  117.                     iCol += 1
  118.                 Next
  119.                 '// เพิ่มเข้าไปในแถวของตารางกริด
  120.                 dgvData.Rows.Add(dgvRow)
  121.                 sRow += 1
  122.                 '// Trap Error
  123.             Catch ex As Microsoft.VisualBasic.FileIO.MalformedLineException
  124.                 MessageBox.Show(ex.Message)
  125.             End Try
  126.         Loop

  127.         '// Close the reader
  128.         reader.Close()
  129.     End Sub

  130.     ' / ---------------------------------------------------------------
  131.     Private Sub frmCYoutube_FormClosed(sender As Object, e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
  132.         Me.Dispose()
  133.         Application.Exit()
  134.     End Sub

  135.     ' / ---------------------------------------------------------------
  136.     Private Sub frmCYoutube_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
  137.         Call SetupDataGrid()
  138.         ToolStripStatusLabel5.Text = ""
  139.     End Sub

  140.     ' / ---------------------------------------------------------------
  141.     ' / บันทึกข้อมูลลง Text File
  142.     Private Sub btnSave_Click(sender As System.Object, e As System.EventArgs) Handles btnSave.Click
  143.         If dgvData.RowCount = 0 Then Return
  144.         '// เช็คก่อนว่ามีรายการใดในตารางกริดที่ไม่ได้ป้อนข้อมูล
  145.         For xRow = 0 To dgvData.RowCount - 1
  146.             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
  147.                 MessageBox.Show("รายการแถวที่ " & xRow + 1 & " ยังไม่ได้ใส่รายการ กรุณาตรวจสอบให้เรียบร้อย.", "ตรวจสอบข้อมูล", MessageBoxButtons.OK, MessageBoxIcon.Warning)
  148.                 Exit Sub
  149.             End If
  150.         Next
  151.         '//
  152.         Dim dlgSaveFile As New SaveFileDialog()
  153.         With dlgSaveFile
  154.             .Filter = "Text File |*.txt"
  155.             .Title = "บันทึกไฟล์ Text File"
  156.             .DefaultExt = "txt"
  157.             .InitialDirectory = MyPath(Application.StartupPath)
  158.             .RestoreDirectory = True
  159.         End With
  160.         If dlgSaveFile.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
  161.             Call ExportToTextFile(dlgSaveFile.FileName)
  162.         End If
  163.     End Sub

  164.     ' / ---------------------------------------------------------------
  165.     Private Sub ExportToTextFile(strFile As String)
  166.         Dim writer As TextWriter = New StreamWriter(strFile)
  167.         Try
  168.             Dim sRow As Integer = dgvData.Rows.Count - 1
  169.             '// วนรอบตามจำนวนแถว
  170.             For i As Integer = 0 To sRow
  171.                 '// เริ่มนับหลักจาก 0 และตัดหลักปุ่มเพิ่มและลบออกไป จึงต้องลบออกด้วย 3
  172.                 For j As Integer = 0 To dgvData.Columns.Count - 3
  173.                     If j = dgvData.Columns.Count - 3 Then
  174.                         writer.Write(Replace(dgvData.Rows(i).Cells(j).Value.ToString(), ",", ""))
  175.                     Else
  176.                         writer.Write(Replace(dgvData.Rows(i).Cells(j).Value.ToString, ",", "") & ",")
  177.                     End If
  178.                 Next
  179.                 writer.WriteLine("")
  180.             Next
  181.         Catch ex As Exception
  182.             MessageBox.Show(ex.Message, "รายงานความผิดพลาด", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
  183.         End Try
  184.         writer.Close()
  185.     End Sub

  186.     ' / ---------------------------------------------------------------
  187.     Private Sub dgvData_CellClick(sender As Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvData.CellClick
  188.         Select Case e.ColumnIndex
  189.             '// หลักที่ 3 (Index = 2) คือหลักที่เป็นปุ่มเพิ่ม
  190.             Case 2
  191.                 dgvData.Rows.Add()
  192.                 '// หลักที่ 4 คือหลักที่เป็นปุ่มลบ
  193.             Case 3
  194.                 '// ลบรายการแถวที่เลือกออกไป
  195.                 dgvData.Rows.Remove(dgvData.CurrentRow)
  196.         End Select

  197.     End Sub

  198.     ' / ---------------------------------------------------------------
  199.     Private Sub btnPlay_Click(sender As System.Object, e As System.EventArgs) Handles btnPlay.Click
  200.         If dgvData.RowCount = 0 Then Return
  201.         ToolStripStatusLabel5.Text = dgvData.CurrentRow.Cells(1).Value.ToString
  202.         If AxVLCPlugin21.playlist.isPlaying Then AxVLCPlugin21.playlist.stop()
  203.         Try
  204.             With AxVLCPlugin21
  205.                 '.playlist.items.remove(0)
  206.                 .playlist.items.clear()
  207.                 .playlist.add(dgvData.CurrentRow.Cells(1).Value.ToString)
  208.                 .playlist.play()
  209.             End With
  210.         Catch ex As Exception
  211.             MessageBox.Show(ex.Message, "Report Status", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
  212.         End Try
  213.     End Sub

  214.     ' / ---------------------------------------------------------------
  215.     ' / Get my project path
  216.     ' / AppPath = C:\My Project\bin\debug
  217.     ' / Replace "\bin\debug" with ""
  218.     ' / Return : C:\My Project\
  219.     Function MyPath(ByVal AppPath As String) As String
  220.         '/ MessageBox.Show(AppPath);
  221.         AppPath = AppPath.ToLower()
  222.         '/ Return Value
  223.         MyPath = AppPath.Replace("\bin\debug", "").Replace("\bin\release", "").Replace("\bin\x86\debug", "").Replace("\bin\x86\release", "")
  224.         '// If not found folder then put the \ (BackSlash) at the end.
  225.         If Microsoft.VisualBasic.Right(MyPath, 1) <> Chr(92) Then MyPath = MyPath & Chr(92)
  226.     End Function

  227.     Private Sub ToolStripStatusLabel3_Click(sender As System.Object, e As System.EventArgs) Handles ToolStripStatusLabel3.Click
  228.         Process.Start("http://www.g2gnet.com/webboard")
  229.     End Sub

  230.     Private Sub ToolStripStatusLabel2_Click(sender As System.Object, e As System.EventArgs) Handles ToolStripStatusLabel2.Click
  231.         Process.Start("https://www.facebook.com/g2gnet")
  232.     End Sub

  233.     Private Sub btnExit_Click(sender As System.Object, e As System.EventArgs) Handles btnExit.Click
  234.         Me.Close()
  235.     End Sub
  236. End Class
คัดลอกไปที่คลิปบอร์ด

ดาวน์โหลดโค้ดต้นฉบับ VB.NET (2010) ได้ที่นี่ ...

ขออภัย! โพสต์นี้มีไฟล์แนบหรือรูปภาพที่ไม่ได้รับอนุญาตให้คุณเข้าถึง

คุณจำเป็นต้อง ลงชื่อเข้าใช้ เพื่อดาวน์โหลดหรือดูไฟล์แนบนี้ คุณยังไม่มีบัญชีใช่ไหม? ลงทะเบียน

x
สิ่งที่ดีกว่าการให้ คือการให้แบบไม่มีที่สิ้นสุด
ขออภัย! คุณไม่ได้รับสิทธิ์ในการดำเนินการในส่วนนี้ กรุณาเลือกอย่างใดอย่างหนึ่ง ลงชื่อเข้าใช้ | ลงทะเบียน

รายละเอียดเครดิต

ข้อความล้วน|อุปกรณ์พกพา|ประวัติการแบน|G2GNet.com  

GMT+7, 2024-11-27 22:36 , Processed in 0.192990 second(s), 5 queries , File On.

Powered by Discuz! X3.4, Rev.62

Copyright © 2001-2020 Tencent Cloud.

ตอบกระทู้ ขึ้นไปด้านบน ไปที่หน้ารายการกระทู้