ACC: How to Use a Microsoft Access Macro to Quit Windows

Last reviewed: August 29, 1997
Article ID: Q89596
The information in this article applies to:
  • Microsoft Access versions 1.0, 1.1, 2.0, 7.0, 97

SUMMARY

Advanced: Requires expert coding, interoperability, and multiuser skills.

It is possible to quit Microsoft Windows from within a Microsoft Access application by using a Windows application programming interface (API) function. To do this, you must create a module that declares the API function and a procedure to call the API function; then, you must call the procedure in a macro using the RunCode action.

This article assumes that you are familiar with Visual Basic for Applications and with creating Microsoft Access applications using the programming tools provided with Microsoft Access. For more information about Visual Basic for Applications, please refer to your version of the "Building Applications with Microsoft Access" manual.

NOTE: Visual Basic for Applications is called Access Basic in Microsoft Access versions 1.x and 2.0. For more information about Access Basic, please refer to the "Introduction to Programming" manual in Microsoft Access version 1.x or the "Building Applications" manual in Microsoft Access version 2.0

MORE INFORMATION

The call to the Windows dynamic-link library (DLL) below behaves in the same way as the Exit command from the File menu in Program Manager in Windows 3.x, or the "Shut Down" option from the Start button in Microsoft Windows 95 and Windows NT 4.0. Each application must agree to be closed; for example, if you choose Cancel when you are prompted to save a file, your exit request is also canceled.

To create a Microsoft Access function that quits Windows, follow these steps:

In Microsoft Access 1.0, 1.10, and 2.0:

  1. Create a module and type the following in the Declarations section:

    NOTE: In the following sample code, an underscore (_) is used as a line-continuation character. Remove the underscore from the end of the line when re-creating this code in Access Basic.

          Option Explicit
          Declare Function ExitWindows% Lib "user" (ByVal dwReserved&,_
    
                                                    ByVal wReturnCode%)
    
    

  2. Type the following procedure:

          Function ExitNow ()
    
             Dim RetVal as Integer
             RetVal = ExitWindows(0, 0)
          End Function
    
    

  3. Save the module as WinExit and close it.

  4. Create the following new macro called TestExit:

          Macro Name Condition  Action
          -----------------------------
    
          TestExit              RunCode
    
          TestExit Actions
          ---------------------------
          RunCode
             Function Name: ExitNow()
    
    

  5. Save the macro and close it.

In Microsoft Access 7.0 and 97:

  1. Create a module and type the following in the Declarations section:

          Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As _
          Long, ByVal dwReserved As Long) As Long
    

  2. Type the following procedure:

          Function ShutDownWindows()
    
             'This will exit all applications and shut down Windows.
             Dim x As Long
             x = ExitWindowsEx(1, 0)
             application.Quit acExit
          End Function
    
       NOTE: If you are using Microsoft Windows NT, or if you would like
       to exit all applications but not log off the user, you can change
       the first ExitWindowsEx argument to 0 as follows:
    
          x = ExitWindowsEx(0, 0)
    
    

  3. Save the module as WinExit and close it.

  4. Create the following new macro called TestExit:

          Macro Name Condition  Action
          -----------------------------
    
          TestExit              RunCode
    
          TestExit Actions
          -----------------------------
          RunCode
             Function Name: ShutDownWindows()
    
    

  5. Save the macro and close it.

You can now add the macro to a form and use it as you would any other Microsoft Access macro.

Microsoft does not recommend quitting Microsoft Access by using Windows API calls, although quitting in this manner can be safely accomplished. In some cases, temporary files can be left in the Windows Temp directory; however, you can safely delete the Temp files.

REFERENCES

"Programming Windows: The Microsoft Guide to Writing Applications for Windows 3," by Charles Petzold, Microsoft Press, 1990

"Programmer's Reference Library: Microsoft Windows 3.1 Guide to Programming Reference," Volumes 1-6, Microsoft Press, 1992


Additional query words: sdk
Keywords : kbprg PgmApi
Version : 1.0 1.1 2.0 7.0 97
Platform : WINDOWS
Hardware : x86
Issue type : kbhowto


THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.

Last reviewed: August 29, 1997
© 1998 Microsoft Corporation. All rights reserved. Terms of Use.