Microsoft KB Archive/80404

From BetaArchive Wiki
Knowledge Base


Article ID: 80404

Article Last Modified on 12/12/2003



APPLIES TO

  • Microsoft Visual Basic 2.0 Standard Edition
  • Microsoft Visual Basic 3.0 Professional Edition
  • Microsoft Visual Basic 2.0 Professional Edition
  • Microsoft Visual Basic 3.0 Professional Edition
  • Microsoft Visual Basic 1.0 Standard Edition



This article was previously published under Q80404

SYMPTOMS

When a Visual Basic application shells to a Microsoft Windows-based application that expects to find a dynamic link library (DLL) in its own directory, Visual Basic may generate the following error message and fail to start the application:

Cannot Find <DLL NAME>, Please Insert in Drive A

CAUSE

This error occurs because the application being shelled to expects to find the DLL in the current directory, the MS-DOS path, or the Windows directory. Shelling to an application in code does not change the current directory, even if you specify the path to the application in the Shell statement.

RESOLUTION

One solution is to use Visual Basic for Windows' ChDir statement to change the current directory to the directory containing the DLL before attempting to shell to the application. An alternative solution is to copy the DLL to the Windows directory, or include the path where the DLL is located in the MS-DOS path.

MORE INFORMATION

The following is a pseudocode example that shows how to use the ChDir statement to make the application's directory the current directory. The C:\APPS directory and the .EXE name MYAPP.EXE are arbitrary names selected to represent the location of the application being shelled to and an .EXE name, respectively.

    Sub Form_Click ()
        ChDir "c:\Apps"     ' The name of the directory containing
                            ' the needed DLL.
        x% = Shell("c:\Apps\MyApp.EXE", 1)
    End Sub
                

NOTE: If the application is on a different drive, use the ChDrive statement first to change drives before using the ChDir statement.


Additional query words: 2.00 3.00

Keywords: kbprb KB80404