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 SubTimerin 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 SubAihe on jo aika vanha, joten et voi enää vastata siihen.