Solved

file not found

Posted on 1998-12-14
1
180 Views
Last Modified: 2010-05-03
I'm trying to make a cd with a bunch of solitaire games. I made a menu program for the cd that shells to the games. As I don't know what my friend's cdrom drive letter is I used
Dim x
x = Shell(App.Path + "\filename.exe", 1)
It works fine in a directory on my HD but when I make the cd
I get a file not found error, all of the files are in the root directory of the CD. I'm using VB4 Pro ans sscommand buttons.I want to keep as much on the cd as possible with little to none being put on a HD.
0
Comment
Question by:ralphy
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
1 Comment
 
LVL 2

Accepted Solution

by:
dm_14 earned 100 total points
ID: 1449990
1. The average PC has one CD ROM driver, so all you need is the driver letter of the CD Rom drive
2. Just incase there are more than one you can check the CD
ROM volume name match your cd title
3. The code below should give you an idea of how to do this :



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
       Public Const DRIVE_CDROM = 5


Add the following code to Form1.

Private Sub Form_Load()

       Me.Move (Screen.Width - Me.Width) \ 2, (Screen.Height - Me.Height) \ 2
       
End Sub


Private Sub cmdEnd_Click()

       Unload Me
End

End Sub


Private Sub cmdDriveInfo_Click()

       '      '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 JustOneDrive 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
       r& = GetLogicalDriveStrings(Len(allDrives$), allDrives$)
       '      '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)
                     JustOneDrive$ = Left$(allDrives$, pos% - 1)
                     
                     '     'and remove that from the Alldrives string,
                     '     'so it won't be checked again
                     allDrives$ = Mid$(allDrives$, pos% + 1, Len(allDrives$))
                     
                     '     'with the one drive, call the API to
                     '     'determine the drive type
                     DriveType& = GetDriveType(JustOneDrive$)
                     '     '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(JustOneDrive$)
                                   
                                   '      'we're done for now, so get out
                                   Exit Do
                            End If

                      End If
                      Loop Until allDrives$ = "" Or DriveType& = DRIVE_CDROM
                     '      'display the appropriate message
                      If CDfound Then
                     Label2 = "The CD ROM drive on your system is drive " & UCase$(JustOneDrive$) & vbCrLf
                     Label2 = Label2 & "The volume label is " & CDLabel$
                      Else: Label2 = "No CD ROM drives were detected on your system."
                      End If
              End Sub


Private Function rgbGetVolumeLabel(CDPath$) As String

       '      'create working variables
       '      'to keep it simple, use dummy variables for info
       '      'we're not interested in right now
        Dim r As Long
        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
        r& = GetVolumeInformation(CDPath$, _
       DrvVolumeName$, _
       Len(DrvVolumeName$), _
       UnusedVal1&, UnusedVal2&, _
       UnusedVal3&, _
       UnusedStr$, Len(UnusedStr$))
       '      'error check
        If r& = 0 Then Exit Function
       '      '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 Function

0

Featured Post

Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

If you have ever used Microsoft Word then you know that it has a good spell checker and it may have occurred to you that the ability to check spelling might be a nice piece of functionality to add to certain applications of yours. Well the code that…
I was working on a PowerPoint add-in the other day and a client asked me "can you implement a feature which processes a chart when it's pasted into a slide from another deck?". It got me wondering how to hook into built-in ribbon events in Office.
Get people started with the utilization of class modules. Class modules can be a powerful tool in Microsoft Access. They allow you to create self-contained objects that encapsulate functionality. They can easily hide the complexity of a process from…
Show developers how to use a criteria form to limit the data that appears on an Access report. It is a common requirement that users can specify the criteria for a report at runtime. The easiest way to accomplish this is using a criteria form that a…

724 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question