Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


CD-inmatning

Postades av 2002-06-30 12:10:50 - Tobias Ivarsson, i forum api-windows, Tråden har 1 Kommentarer och lästs av 1213 personer

Jag undrar om det finns något sätt att känna av när en CD-skiva matas in.
Jag skulle vilja att vare gång en skiva matas in i cd-enheten så ska mitt program startas upp.
sen skulle jag även vilja kunna blockera vissa cd-skivor, så att programmet har en lista över förbjudna skivor (varje skiva har om inte jag minns fel ett id-nr) och om skivan som matades in finns med i listan så ska skivan matas ut automatiskt och en dialogruta ska visas "Den här skivan är bannlyst av systemet" (eller nått sån't) annars ska skivan spelas upp som vanligt (enligt autorun.inf eller som audio-cd)...
behöver isåfall även veta hur man kommer åt cd-skivans id-nr...

kort sammanfattning av vad jag behöver veta:
*hur jag får mitt program att starta vid inmatning av cd-skiva
*hur jag får reda på cd-skivans id-nr
*hur jag sedan spelar upp skivan på standardvis (enligt autorun.inf eller med associerad cd-spelarprogramvara)

tack på förhand /Tobias


Svara

Sv: CD-inmatning

Postades av 2003-04-15 23:16:00 - Kenneth Axi

Jag tvivlar på att man kan avbryta/stoppa den automatiska uppspelningen då man matar in en ny CD (åtminstone via kod - det går med tangentbordstryckningar).

Däremot : Här har du koden för att få fram volymnamnet på en inmatad CD:

<code>
Public Declare Function GetLogicalDriveStrings Lib "kernel32" _
Alias "GetLogicalDriveStringsA" _
(ByVal nBufferLength As Long, _
ByVal lpBuffer As String) As Long

Public Declare Function GetDriveType Lib "kernel32" _
Alias "GetDriveTypeA" _
(ByVal nDrive As String) As Long

Declare Function GetVolumeInformation Lib "kernel32" _
Alias "GetVolumeInformationA" _
(ByVal lpRootPathName As String, _
ByVal lpVolumeNameBuffer As String, _
ByVal nVolumeNameSize As Long, _
lpVolumeSerialNumber As Long, _
lpMaximumComponentLength As Long, _
lpFileSystemFlags As Long, _
ByVal lpFileSystemNameBuffer As String, _
ByVal nFileSystemNameSize As Long) As Long

Public Const DRIVE_CDROM = 5

Private Sub GetInfo()
'get the available drives, determine their type,
'and if CD, get the CD volume label
Dim r As Long
Dim DriveType As Long
Dim allDrives As String
Dim oneDrive As String
Dim CDLabel As String
Dim pos As Integer
Dim CDfound As Boolean

'pad the string with spaces
allDrives = Space$(64)

'Call the API to get the string containing all drives.
'The API will return 0 if none, or the length of
'the string returned in 'allDrives' if successful.

r = GetLogicalDriveStrings(Len(allDrives), allDrives)

If r > 0 then

'trim off any trailing spaces. 'AllDrives'
'now contains all the drive letters.
allDrives = Left$(allDrives, r)

'begin a loop
Do

'first check that there is a chr$(0) in the string
pos = InStr(allDrives, Chr$(0))

'if there's one, then...
If pos Then

'extract the drive up to the chr$(0)
oneDrive = Left$(allDrives, pos - 1)

'and remove that from the allDrives string,
'so it won't be checked again
allDrives = Mid$(allDrives, pos + 1)

'with the one drive, call the API to
'determine the drive type
DriveType = GetDriveType(oneDrive)

'check if it's what we want
If DriveType = DRIVE_CDROM Then

'got it (or at least the first one,
'anyway, if more than one), so set
'the found flag... this part can be modified
'to continue searching remaining drives for
'those systems that might have more than
'one CD installed.
CDfound = True
CDLabel = rgbGetVolumeLabel(oneDrive)

'we're done for now, so get out
Exit Do
End If
End If

Loop Until (allDrives = "") Or (DriveType = DRIVE_CDROM)

End If

'display the appropriate message
If CDfound Then
MsgBox "The CD ROM drive on your system is drive " _
& UCase$(oneDrive) & vbCrLf _
& "The volume label is " & CDLabel
Else: MsgBox "No CD ROM drives were detected on your system."
End If
End Sub

Private Function rgbGetVolumeLabel(CDPath As String) As String

'create working variables
'to keep it simple, use dummy variables for info
'we're not interested in right now
Dim DrvVolumeName As String
Dim pos As Integer
Dim UnusedVal1 As Long
Dim UnusedVal2 As Long
Dim UnusedVal3 As Long
Dim UnusedStr As String

DrvVolumeName = Space$(14)
UnusedStr = Space$(32)

'do what it says
If GetVolumeInformation(CDPath, _
DrvVolumeName, _
Len(DrvVolumeName), _
UnusedVal1, UnusedVal2, _
UnusedVal3, _
UnusedStr, Len(UnusedStr)) > 0 Then

'the volume label
pos = InStr(DrvVolumeName, Chr$(0))
If pos Then DrvVolumeName = Left$(DrvVolumeName, pos - 1)
If Len(Trim$(DrvVolumeName)) = 0 Then DrvVolumeName = "(no label)"

rgbGetVolumeLabel = DrvVolumeName

End If

End Function
</code>

Hur man spelade upp CD-skiva (CD musik) kommer jag inte ihåg just nu - måste kolla upp det. Tror att det var API anrop med SndPlay eller något sådant...


Svara

Nyligen

  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper
  • 16:36 Allt du behöver veta om keramiskt
  • 16:14 Vem anlitar man egentligen när tak
  • 16:14 Vem anlitar man egentligen när tak
  • 16:13 Vem anlitar man egentligen när tak
  • 11:52 Noen erfaring med uttak hos Mostbe
  • 11:51 Noen erfaring med uttak hos Mostbe

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 574
27 958
271 741
5 905
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies