Eli, Visualilla... Miten onnistuu, ja onnistuuko siirrettävän levyn tunnistaminen. Ideana rakentaa ohjelma joka tunnistaa siirrettävän levyn tulleen paikoilleen ja hakee sieltä playlistan, jonka perusteella soittelee musiikkia?
Eli lähinnä se milloin USB tikku on pukattu kiinni, ja minkä levytunnuksen se on saanut..
Voi olla fiksumpikin tapa mutta ensinnä tuli mieleen kokeilla tällaista:
Dim lc As Integer Private Sub Form_Load() lc = Drive1.ListCount End Sub Private Sub Timer1_Timer() Drive1.Refresh If Drive1.ListCount > lc Then lblDrv = Drive1.List(Drive1.ListCount - 1) Else lblDrv = "" End If End Sub
Timerin Intervallin voi valita esim. sekunniksi eli = 1000
Kun USB-tikun tökkää liittimeen sen tunnus ilmaantuu labeliin lblDrv. Ja häviää siitä, kun tikun nyppää pois.
Ainiin, ei tullu mieleenkään käyttää Drive kontrollia. Suuri Kiitos! Juuri selainen pohja, josta tuota asiaa voisi ruveta jatkojalostamaan.
Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long
Tuollanen löytyi.. saattaisi olla hyötyä ;)
http://allapi.mentalis.org/apilist/GetDriveType.shtml
Tein tuollaisen ohjelman pätkän, joka tunnistaa liitetyn USB-tikun ja reagoi myös sen poistamiseen.
Private Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long Dim Drives As Integer, D2 As Integer Private Sub Form_Load() Dim DR% Me.AutoRedraw = True 'Get information about the C:\ For I = Asc("C") To Asc("Z") Me.Print "Drive "; Chr$(I); " "; Select Case GetDriveType(Chr$(I) & ":\") Case 2 Me.Print "Removable" Case 3 Me.Print "Drive Fixed" Case Is = 4 Me.Print "Remote" Case Is = 5 Me.Print "Cd-Rom" Case Is = 6 Me.Print "Ram disk" Case Else Me.Print "Unrecognized" Exit For End Select '(oletetaan, että levyt järjestyksessä) Drives = I 'Talletetaan tunnistettujen asemien viimeisin Next I Timer1.Interval = 2000 '2s muuta esim 10000 Timer1.Enabled = True End Sub Private Sub Form_Unload(Cancel As Integer) End End Sub Private Sub Timer1_Timer() Dim I%, D%, D2% For I = Drives To Drives + 2 D = GetDriveType(Chr$(I) & ":\") If (D >= 2 And D <= 6) Then If I = Drives + 1 Then MsgBox "Uusi asema " & Chr$(I) & " Löytyi!" Drives = I 'Lisätään etsittävien määrää If D = 2 Then MsgBox "Asema on Ulkoinen tai USB" End If ElseIf I = Drives Then MsgBox "Asema " & Chr$(I) & " Poistui!" Drives = I - 1 End If Next I End Sub
Aihe on jo aika vanha, joten et voi enää vastata siihen.