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

ID: Q89596

The information in this article applies to:

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
Version           : 1.0 1.1 2.0 7.0 97
Platform          : WINDOWS
Hardware          : x86
Issue type        : kbhowto

Last Reviewed: November 20, 1998